“Class”类
“Class”类
众所周知Java有个Object类,是所有Javaclasses的继承根源,其内声明了数个应该在所有Javaclass中被改写的methods:hashCode()、equals()、clone()、toString()、getClass()等。其中getClass()返回一个Classobject。
Classclass十分特殊。它和一般classes一样继承自Object,其实体用以表达Java程序运行时的classes和interfaces,也用来表达enum、array、primitiveJavatypes(boolean,byte,char,short,int,long,float,double)以及关键词void。当一个class被加载,或当加载器(classloader)的defineClass()被JVM调用,JVM便自动产生一个Classobject。
“Class”object的取得途径
Java允许我们从多种管道为一个class生成对应的Classobject。下图是一份整理。
Classobject诞生管道
示例
运用getClass()
注:每个class都有此函数
Stringstr="abc";
Classc1=str.getClass();
运用
Class.getSuperclass()
Buttonb=newButton();
Classc1=b.getClass();
Classc2=c1.getSuperclass();
运用staticmethod
Class.forName()
(最常被使用)
Classc1=Class.forName("java.lang.String");
Classc2=Class.forName("java.awt.Button");
Classc3=Class.forName("java.util.LinkedList$Entry");
Classc4=Class.forName("I");
运用
.class语法
Classc1=String.class;
Classc2=java.awt.Button.class;
Classc3=Main.InnerClass.class;
Classc4=int.class;
Classc5=int[].class;
运用
primitivewrapperclasses
的TYPE语法
Classc1=Boolean.TYPE;
Classc2=Byte.TYPE;
Classc3=Character.TYPE;
Classc4=Short.TYPE;
Classc5=Integer.TYPE;
Classc6=Long.TYPE;
Classc7=Float.TYPE;
Classc8=Double.TYPE;
Classc9=Void.TYPE;