<span style="white-space:pre"> </span>//注意它的private Class() {},意指不允许任何人经由编程方式产生Class object。
//是的,其object 只能由JVM 产生。
/*
* Class 类十分特殊。它和一般类一样继承自Object,其实体用以表达Java程序运行时的classes
* 和interfaces,也用来表达enum、array、primitive Java types(boolean,
* byte, char, short, int, long, float, double)以及关键词void。当一个class
*被加载,或当加载器(class loader)的defineClass()被JVM调用,JVM 便自动产生一个
*Class 对象。如果您想借由“修改Java标准库源码”来观察Class 对象的实际生成时机(例如在Class
*的constructor内添加一个println()),这样是行不通的!因为Class并没有public
*constructor。
* */
public static void main(String [] args) throws NoSuchMethodException {
//Java允许我们从多种管道为一个class生成对应的Class object
//getClass();
String str = "abc";
Class c1 = str.getClass();
System.out.println(c1);//class java.lang.String
//getSuperclass()
Button b = new Button();
Class c2 = b.getClass();
Class c3 = c2.getSuperclass();
System.out.println(c2);//class java.awt.Button
System.out.println(c3);//class java.awt.Component
//Class.forName()
try{
Class c4 = Class.forName("java.lang.String");
System.out.println(c4);//class java.lang.String
System.out.println(c4.getClass());//class java.lang.Class
System.out.println(c4.getClass().getClass());//class java.lang.Class
System.out.println(c4.getClass().getClass().getClass());//class java.lang.Class
//Class c5 = Class.forName(".class");//输出错误信息
}catch(ClassNotFoundException ex) {
ex.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//TYPE
Class c5 = Long.TYPE;
System.out.println(c5);//long
System.out.println(c5.getConstructors());//[Ljava.lang.reflect.Constructor;@14318bb
}