java高级反射之获取class

前提:在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);
    }
}
 

猜你喜欢

转载自blog.csdn.net/youjiangtengwan1/article/details/83502769