• Java 反射


    1. 反射是什么

    加载完类之后,堆内存中就会有Class对象(一个类对应一个Class对象),这个对象包含了类完整的结构信息;我们可以通过这个对象看到类的结构,这个过程称为反射。

    反射机制允许在运行期间利用Reflection API获得任何类的内部信息,并操作对象的方法。

    通过反射可以调用一个类的私有属性和方法。

    2. 类加载

    (1)类初始化步骤:

    • 如果类还未被加载和连接,则程序先加载并连接该类
    • 父类还未被加载,则先加载父类
    • 如果有初始化语句,执行初始化语句

    (2)类加载器作用:

    • 负责将.class文件加载到内存中,并为之生成对应的java.lang.Class对象
    • 更好的理解程序运行

     

    3. 反射应用

    (1)获取构造方法(全部/单个)

    (2)获取成员变量

    (3)获取成员方法

    public class Demo {
        public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
            //获取class对象
            Class<?> c = Class.forName("Ant.Ant");
            //获取单个方法
            Method m=c.getMethod("method1");
            //获取无参构造方法创建对象
            Constructor<?> con = c.getConstructor();
            //用构造方法创建实例
            Object obj=con.newInstance();
            //调用无参方法
            m.invoke(obj);
        }
    }

     (4)获取Class对象的三种方式

    Class clazz1=String.class;
    Class clazz2=solution.getClass();
    Class clazz3=Class.forName("com.Kinghao.Person");//更好地体现动态性
  • 相关阅读:
    Spring boot mybatis : Error creating bean with name 'com.github.pagehelper.autoconfigure.MapperAutoConfiguration': Invocation of init method failed;
    方法调用
    初识MQ
    Shell 变量
    Eclipse 导入本地 Git 项目
    IDEA 常用快捷键
    Xshell 配色方案
    冒泡排序
    递归
    安卓服务Service详解
  • 原文地址:https://www.cnblogs.com/Kinghao0319/p/13736557.html
Copyright © 2020-2023  润新知