JAVA反射机制学习随笔

JAVA反射机制是用于在运行时动态的获取类的信息或者方法,属性,也可以用来动态的生成类,由于所有类都是CLASS的子类,我们可以用一个CLASS类的实例来实例化各种类

例如:

 Class<?> class1 = null;  
        Class<?> class2 = null;  
          
        //写法1, 可能抛出 ClassNotFoundException [多用这个写法]  
        class1 = Class.forName("cn.lee.demo.Person");  
        System.out.println("Demo2:(写法1) 包名: " + class1.getPackage().getName() + ","   
                + "完整类名: " + class1.getName());  
          
        //写法2  
        class2 = Person.class;  
        System.out.println("Demo2:(写法2) 包名: " + class2.getPackage().getName() + ","   
                + "完整类名: " + class2.getName());  

这是常用的形式

还有一种是获取内部的方法/属性

Class<?> class1 = null;  
        class1 = Class.forName("cn.lee.demo.Person");  
        Object obj = class1.newInstance();  
          
        Field personNameField = class1.getDeclaredField("name");  
        personNameField.setAccessible(true);  
        personNameField.set(obj, "胖虎先森");  
          
          
        System.out.println("Demo5: 修改属性之后得到属性变量的值:" + personNameField.get(obj));

可以操作类内部的属性和方法

-----人若无名,则可专心练剑
原文地址:https://www.cnblogs.com/u3shadow/p/4309626.html