zoukankan      html  css  js  c++  java
  • 反射:创建运行时类的对象

    1.代码举例
    Class<Person> clazz = Person.class;
    
    Person obj = clazz.newInstance();
    System.out.println(obj);

    2.说明

    newInstance():调用此方法,创建对应的运行时类的对象。内部调用了运行时类的空参的构造器。
    要想此方法正常的创建运行时类的对象,要求:
    1.运行时类必须提供空参的构造器
    2.空参的构造器的访问权限得够。通常,设置为public。

    在javabean中要求提供一个public的空参构造器。原因:
    1.便于通过反射,创建运行时类的对象
    2.便于子类继承此运行时类时,默认调用super()时,保证父类此构造器!!
    //体会反射的动态性,在框架中大量的使用框架,就是利用反射的通用性,只要给出类的路径或者一个标示,就可以创建相应的对象!!
        @Test
        public void test2(){
    
            for(int i = 0;i < 100;i++){
                int num = new Random().nextInt(3);//0,1,2
                String classPath = "";
                switch(num){
                    case 0:
                        classPath = "java.util.Date";
                        break;
                    case 1:
                        classPath = "java.lang.Object";
                        break;
                    case 2:
                        classPath = "com.atguigu.java.Person";
                        break;
                }
    
                try {
                    Object obj = getInstance(classPath);
                    System.out.println(obj);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
    
    
    
        }
    
        /*
        创建一个指定类的对象。
        classPath:指定类的全类名
         */
        public Object getInstance(String classPath) throws Exception {
           Class clazz =  Class.forName(classPath);
           return clazz.newInstance();
        }
  • 相关阅读:
    03 选看 OpenID Connect 简介
    02 选看 OAuth 2.0 简介(下)
    01 选看 OAuth 2.0 简介(上)
    07 为 MVC 客户端刷新 Token
    06 Authorization Code Flow 实例
    05 Resource Owner Password Credentials 授权
    04 建立 IdentityServer4 项目,Client Credentials
    Identity Server 4 原理和实战(完结)
    依赖注入 Unity入门
    依赖注入 Autofac的高级使用
  • 原文地址:https://www.cnblogs.com/lemonzhang/p/12889022.html
Copyright © 2011-2022 走看看