java反射机制是在运行状态中,对于任意一个类(class)文件,都能够知道这个类所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性。
这种动态获取信息以及动态掉调用对象的方法的功能称为java反射机制。
一.
1.用Object类中的getClass()方法。
Person p1=new person
Class c1=p1.getclass();
System.out.println(c1);
这种方法比较麻烦。
2.任何数据类型都具备一个静态的属性。class来获取其对应的class对象。
class c1=Person.class;
System.out.println(c1);
相对来说比较简单,但是还是要明确用到的类中的静态成员。
3.只要通过给定的类的字符串名称就可以获取该类,更为扩展。
用class类中的方法完成
Classc1=Class.forName(xxx.Person);//括号里面写的是Person类的包名+类名
System.out.println(c1);
二.
1.对于Contructor。要获取到一个构造函数。是通过字节码文件对象即可完成。方法是
早期先new,然后根据被new的类的名称来找寻类的字节码文件,并创建该字节码文件的对应的类的对象。
现在可以直接用newInstance的方法,如果构造方法的声明类尚未初始化,则初始化这个类。
2.对于获取字段
倘若要对私有的字段访问,则可以用一个方法取消权限检查,即
filed.setAccessible(true);暴力访问。不过不推荐使用。
3.对于获取一些方法,直接有getMethods和getDeclardMethods两种,也就是公有的和本类所有的,获取某一个,则用getMethod(“xxx”,Objo).要写明方法名和参数。空参就写null,有参数则要写参数类型。