java反射基础:
在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对象的方法的功能就称为java语言的反射机制。通俗点讲,通过反射,该类对我们来说是完全透明的,想要获取任何东西都可以。
3种方式均可以获取:
1、源文件阶段:Class clazz1 = Class.forName("全限定类名");//通过Class类中的静态方法forName
2、class字节码阶段:Class clazz2 = Person.class; //当类被加载成.class文件时,此时Person类变成了.class,在获取该字节码文件对象,也就是获取自己
3、已有对象的阶段:Class clazz3 = p.getClass(); //通过类的实例获取该类的字节码文件对象
操作整个类的所有东西:构造方法、成员变量、成员方法;
需要注意:
1、getFiled()方法 和 getDeclaredFiled()方法区别使用,获取私有属性或方法时,需要设置可访问权限;
2、注意静态的东西可以不用newInstance就可以获取到,但是非静态的需要有对象才能获取到,所以静态变量在getField(null),但非静态的需要有该类的示实例object才可以获取到相应的值,因为非静态的东西是依附于对象,而不是类;
3、可以指定构造函数来实例化对象;
https://www.cnblogs.com/whgk/p/6122036.html
网友评论