Class类的实例描述运行中Java应用程序的类和接口。一个Class类的实例可以描述所有Java的数据类型:类,接口,枚举,注解,数组基本数据类型和关键字void类型。
Class类没有public构造器。Class类的实例的创建是由JVM加载其字节码或通过调用类加载器调用时自动创建。Class类Java反射的核心.通过该类通过字符串类型名称动态创建实例和调用方法。
通常使用三种方式来获得Class对象。
方式一:对象名.getClass();
packagestring.lang.java;
importjava.io.Serializable;
publicclassClassDemo1 {
publicstaticvoidmain(String[]args) {
fun(1);
fun(2.3);
fun("Hello");
fun(newjava.util.Date());
fun(newSerializable(){});
}
publicstaticvoidfun(Objectobj){
System.out.println(obj.getClass().getName());
}
}
运行的结果如下:
方式二:类型名.class;
packagestring.lang.java;
publicclassClassDemo2 {
publicstaticvoidmain(String[]args) {
System.out.println(String.class.getName());
System.out.println(Override.class.getName());
System.out.println(int.class.getName());
System.out.println(void.class.getName());
}
}
运行的结果如下:
方式三:Class.forName(String classFullName);
packagestring.lang.java;
publicclassClassDemo3 {
publicstaticvoidmain(String[]args) {
try{
Classclz=Class.forName("java.lang.String");
System.out.println(clz.getName());
}catch(ClassNotFoundExceptione) {
e.printStackTrace();
}
}
}
运行的结果如下: