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();
        }
  • 相关阅读:
    C++对象模型
    GUID 转 char *
    MFC中App,Doc,MainFrame,View各指针的互相获取
    MFC中设置某个VIEW为当前视图
    MFC中如何在CMainFrame类中访问CxxxView视图类中的成员
    GetMessage 和 PeekMessage 区别
    STL 常用容器
    收发ICMP封包,实现ping
    软件弹窗广告
    python 输入一个字符串,打印出它所有的组合
  • 原文地址:https://www.cnblogs.com/lemonzhang/p/12889022.html
Copyright © 2011-2022 走看看