java中三种方式获得类的字节码文件对象

package get_class_method;

public class ReflectDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        getClassObject1();
        getClassObject2();
        getClassObject3();
    }
    
    public static void getClassObject1(){
        Person p = new Person();
        System.out.println(p.getClass().getName());
    }
    /*
     * 方式二:重点掌握
     * 通过给定类的字符串名称就可获得该类的字节码文件对象,更为扩展。
     * (第一种和第三种都不具有扩展性)
    */
    public static void getClassObject2(){
         Class<Person> pclass = null;
         try {
             /*
              * 类的名字一定要写全(包括该类的包)
              * 因为工程默认的路径查找时在bin目录或者src目录,如果类名不全,就无法找到该类
             */
             pclass = (Class<Person>) Class.forName("get_class_method.Person");
             System.out.println(pclass.getName());
         } catch (ClassNotFoundException e) {
             e.printStackTrace();
         }
    }
    /*
     * 方式三:
     * 任何数据类型都有一个静态的属性 .class来获取其对应类的字节码文件对象
     * 相对简单,但是还是要明确用到类中的静态成员。还是不够扩展!
    */
    public static void getClassObject3(){
        Class pclass = Person.class;
        System.out.println(pclass.getName());
    }
    
}

 

posted @ 2014-10-27 21:25  hjzqyx  阅读(4705)  评论(0编辑  收藏  举报