Java反射学习步骤:
1、 什么是反射机制?
2、 获取字节码文件对象(class)
3、 (Consrtuctor)用字节码对象(class) new一个对象
4、 获取和设置字段(Field)对象的值
5、获取指定class的函数(Method)并对其调用
6、反射实例
获取字节码文件对象
方式:
String className="been.Person";
Classclazz=Class.forName(className);
代码实例:
package reflect.demo;
import been.Person;
/*
* 需求:
* 如何获取字节码文件呢?(就是class文件对象)
* 要求:
* 只提供类的字符串名称,不创建该类对象,并且不调用类中的成员。
* 方式三便符合了此要求。
*
*/
publicclass ReflectDemo {
publicstaticvoidmain(String[] args) throws ClassNotFoundException {
getClassObject_3();
}
publicstaticvoidgetClassObject_3() throws ClassNotFoundException {
/*
* 方式三:
* 只要通过给定的类的字符串名称就可以获取该类,更为扩展。
* 可用Class类中的方法完成。
* 该方法就是forName。
* 这种方式只要名称即可,更为方便,扩展性更强。
*
*
*/
String className="been.Person";
Class clazz=Class.forName(className);
System.out.println(clazz);
}
publicstaticvoid getClassObject_2() {
/*
* 方式二:
*2、任何数据类型都具备一个静态属性.class来获取其对应的Class对象。
* 相对简单,但是还是要明确用到类中的静态成员。
* 还是不够扩展。
*/
Class clazz=Person.class;
Class clazz1=Person.class;
System.out.println(clazz==clazz1);
}
public staticvoid getClassObject_1() {
/*
* 获取字节码文件的方式:
* 方式一:
* 1、Object类中的getClass()方法。
* 想要用这种方式,必须要明确具体的类,并创建对象,麻烦。
*
*/
Person p=newPerson();
Class clazz=p.getClass();
Person p1=newPerson();
Class clazz1=p1.getClass();
System.out.println(clazz==clazz1);
}
}