Class类是反射机制的核心之一,下面是几种获取Class类对象的方式:
1.Class.forname
Class.forname(),在参数列表内输入类名的全名,因为该语句存在检查时异常,所以对其用try——catch对异常进行处理:
package venus;
public class Test {
public static void main(String[] args) {
Class clazz=null;
try {
clazz=Class.forName("venus.Student");
System.out.println(clazz.getName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
2.类名.class
package venus;
public class Test {
public static void main(String[] args) {
Class clazz=Student.class;
System.out.println(clazz.getName());
}
}
3.对象.getClass()
package venus;
public class Test {
public static void main(String[] args) {
Class clazz=new Student().getClass();
System.out.println(clazz.getName());
}
}
上述三种方式打印结果均如下:
4.基本数据类型对应的class对象:包装类.TYPE
这时如果使用.class则创建的是Integer包装类对应的class对象,使用.TYPE创建的则是Integer对应的基本类型的class对象,这时打印结果为int:
package venus;
public class Test {
public static void main(String[] args) {
Class clazz=Integer.TYPE;
System.out.println(clazz.getName());
}
}
5.数组类型对应class:元素类型[].class
package venus;
public class Test {
public static void main(String[] args) {
Class clazz=String [].class;
System.out.println(clazz.getName());
}
}
6.某个类父类所对应的class对象
Student类的父类是Object,所以得到的打印结果为父类的class对象:
package venus;
public class Test {
public static void main(String[] args) {
Class clazz=Student.class.getSuperclass();
System.out.println(clazz.getName());
}
}