• JavaSE-反射-获取类或者对象的四种方法


    1、使用Class类的静态方法Class.forName("xxxx");

      新建一个要想要获取的类

    package org.burning.sport.javase.classloader;
    
    public class ClassLoaderModel {
    }
    package org.burning.sport.javase.classloader;
    
    /**
     * 类的载入方式
     */
    public class ClassLoaderMain {
        public static void main(String[] args) {
    
            ClassLoaderMain clm = new ClassLoaderMain();
            //1.使用Class静态方法Class.forName
            clm.loadClassMethod1();
        }
    
        public void loadClassMethod1() {
            try {
                Class<?> clazz = Class.forName("org.burning.sport.javase.classloader.ClassLoaderModel");
                ClassLoaderModel clm = (ClassLoaderModel)clazz.newInstance();
                System.out.println(clm);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    2、使用ClassLoader

    package org.burning.sport.javase.classloader;
    
    /**
     * 类的载入方式
     */
    public class ClassLoaderMain {
        public static void main(String[] args) {
            ClassLoaderMain clm = new ClassLoaderMain();
            //2.使用ClassLoader
            clm.loadClassMethod2();
        }
    
        public void loadClassMethod2() {
            ClassLoader cl = this.getClass().getClassLoader();
            try {
                Class<?> clazz = cl.loadClass("org.burning.sport.javase.classloader.ClassLoaderModel");
                ClassLoaderModel clm = (ClassLoaderModel) clazz.newInstance();
                System.out.println(clm);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

     3、使用 类.class

    package org.burning.sport.javase.classloader;
    
    /**
     * 类的载入方式
     */
    public class ClassLoaderMain {
        public static void main(String[] args) {
            ClassLoaderMain clm = new ClassLoaderMain();
            //3. 使用类.class方式
            clm.loadClassMethod3();
    
        }
    
        public void loadClassMethod3() {
            Class<?> clazz = ClassLoaderModel.class;
            try {
                ClassLoaderModel str = (ClassLoaderModel)clazz.newInstance();
                System.out.println(str);
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
    }

    4、使用对象的getClass方法

    package org.burning.sport.javase.classloader;
    
    
    /**
     * Created by lisen on 2017/7/27.
     * 类的载入方式
     */
    public class ClassLoaderMain {
        public static void main(String[] args) {
            ClassLoaderMain clm = new ClassLoaderMain();
            //4. 使用对象的getClass方法
            clm.loadClassMethod4();
        }
    
        public void loadClassMethod4() {
            ClassLoaderModel clm = new ClassLoaderModel();
            Class<?> clazz = clm.getClass();
            try {
                ClassLoaderModel ss = (ClassLoaderModel)clazz.newInstance();
                System.out.println(ss);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

     https://gitee.com/play-happy/base-project

  • 相关阅读:
    Matplotlib
    【源码解读】EOS测试插件:txn_test_gen_plugin.cpp
    EOS多节点组网:商业场景分析以及节点启动时序
    EOS商业落地利器:多签名操作与应用
    EOS技术研究:合约与数据库交互
    【精解】EOS标准货币体系与源码实现分析
    【精解】EOS智能合约演练
    Efficient&Elegant:Java程序员入门Cpp
    区块链3.0:拥抱EOS
    以太坊挖矿源码:clique算法
  • 原文地址:https://www.cnblogs.com/happyflyingpig/p/7826412.html
Copyright © 2020-2023  润新知