前提:在com.jk.bean里面创建一个Person类,添加get/set方法,toString方法。还有各种私有和公有方法,供测试用。
package com.jk.fs;
import com.jk.bean.Person;
/**
* 要想对字节码文件进行解剖,必须要有字节码文件对象
*
* @author sx123
*
*/
public class ReflectDemo {
public static void main(String[] args) throws Exception {
getClassObject_3();
}
/**
* 获取字节码对象的对象
* 1、Object类中的getClass方法
* 想要用这种方式,必须要明确具体的类,并创建对象。
*/
public static void getClassObject_1() {
Person p = new Person();
Class clazz = p.getClass();
Person p1 = new Person();
Class clazz1 = p1.getClass();
System.out.println(clazz==clazz1);
}
/**
* 方式二:
* 2、任何数据类型都具备一个静态的属性.class来获取对应的class对象
* 相对简单,但是还是要明确用到类中的静态成员,还是不够扩展
*/
public static void getClassObject_2() {
Class clazz = Person.class;
Class clazz1 = Person.class;
System.out.println(clazz==clazz1);
}
/**
* 方式三:重点掌握
* 只要通过给定的类的字符串名称就可以获取该类,更为扩展
* 可以用Class类中的方法完成
* 该方法就是forName类
* @throws ClassNotFoundException
*/
public static void getClassObject_3() throws ClassNotFoundException {
String className = "com.jk.bean.Person";
Class clazz = Class.forName(className);
System.out.println(clazz);
}
}