获得 Class 对象的方式有三种,
1、 类名.class
2、实例.getClass()
3、Class.for("java.lang.Integer");我想问的问题是:
用这3 种方式去获得 Class 对象的功能一样么?
我的意思是,如果JVM中 已经有 该类或还没有该类,
不知道他们去获得对象的过程中,过程应该一样的哦?

解决方案 »

  1.   

    1.所有的引用数据类型(类-类型)的类名、基本数据类型都可以通过.class方式获取其Class
    对象(对于基本数据类型的封装类还可以通过.TYPE的方式获取其Class 对象,但要注
    意.TYPE实际上获取的封装类对应的基本类型的Class 对象的引用,那么你可以判断出
    int.class==Integer.TYPE返回true,int.class==Integer.class返回false!),通过这种方式
    不会初始化静态域,使用.class、.TYPE的方式获取Class对象叫做类的字面常量; 
    2.Class的forName(String  name)传入一个类的完整类路径也可以获得Class对象,但由于使
    用的是字符串,必须强制转换才可以获取泛型的Class<T>的Class对象,并且你必须获取这
    个方法可能抛出的ClassNotFoundException异常。 
    2.对于引用数据类的引用(必须初始化),可以通过Object类继承的getClass()方法获取这
    个引用的Class对象,由于引用已经被初始化,所以这种方式也不会初始化静态域,因为静
    态域已经被初始化过。另外,前面两种方式如果说是创建Class对象,那么这种方式应该是
    取得Class对象,因为类的实例已经被创建,那么Class对象也一定早就被创建。