附:本博文记录反射基础知识,扩展请参见反射目录下的其余博文。

 

一.通过一个对象获得完整的包名和类名

  方法:class.getClass().getName()。

.实例化Class类对象

  有三种方法:

    1.推荐此种方式进行构建类:Class.forName("className");

    2.java的任何一个java对象都有getClass方法;

    3.每个类都有class属性:className.class。

一、二点详见示例代码:

package temp.reflect;

public class Demo {

    public static void main(String[] args) {
        GetClassName getName = new GetClassName();
        //通过一个对象获得完整的包名和类名Class.getClassName();
        getName.getClassName();
        
        //测试反射机制获取类
        ConstructClass constructClass = new ConstructClass();
        constructClass.constructClass();
    }

}

class GetClassName {
    
    public void getClassName(){
        Demo demo = new Demo();
        System.out.println(demo.getClass().getName());
    }
}

class ConstructClass {
    
    @SuppressWarnings("rawtypes")
    public void constructClass(){
        Class demo1 = null;
        Class demo2 = null;
        Class demo3 = null;
        //反射机制来获取类的三种方式:
        try {
            //1.推荐此种方式进行构建类:Class.forName("className")
            demo1 = Class.forName("temp.reflect.Demo");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        
        //2.java的任何一个java对象都有getClass方法
        demo2=new Demo().getClass();
        //3.每个类都有class属性:className.class
        demo3=Demo.class;
        
        System.out.println("类1名称   "+demo1.getName());
        System.out.println("类2名称   "+demo2.getName());
        System.out.println("类3名称   "+demo3.getName());
        
    }
}
View Code

相关文章: