java.lang.Class
我们之前说过: 一个Class类的实例就代表了一个运行时类,那么Class类的实例只能表示java中的类吗?我们java中的结构还有很多,比如接口 , 枚举类, 基本数据类型, 还有注解标签, 还有数组, 那么这些结构有没有对应的Class类的实例?其实,我们这里说的这几种结构都是可以作为CLass类的实例的 那么下面我们就总结一下 : 哪些类型(结构)可以作为Class类型的对象
- class(类) :
分为外部类, 成员内部类, 静态内部类, 局部内部类, 匿名内部类当等等
eg:
Class c1 = Object.class; Class c2 = String.class;
- interface(接口):
eg:
Class c3 = Comparable.class;
- 数组 (有一位数组和二维数组)
eg:
Class c4 = int[].class; Class c5 = int[][].class;
- enum(枚举):
eg:
//这里的ElementType是我们自定义的一个枚举类 Class c6 = ElementType.class;
- annotation(注解标签)
eg:
Class c7 = Override.class;
- primitive type(基本数据类型)
eg:
Class c8 = int.class;
- void(空值)
记住: 所有返回值类型都是可以作为Class类的实例的
而void也是属于返回值的一种返回值类型包括了基本数据类型,引用类型和void
也就是: Class c = Class.class; 补充: 每个类只有一个唯一存在的Class实例对象 对于数组来讲: 只要数组的元素类型和维度一样,那么它们对应的就是同一个Class实例对象
eg:
int [] a = new int[10]; int [] b = new int[100]; Class c10 = a.getClass(); Class c11 = b.getClass(); System.out.println(c10 == c11); //这里输出结果为true
上述程序中输出结果为: true
因为这个时候我们a数组和b数组都是一维数组并且两个数组的元素类型都是int类型


![Class实例的深入理解 [Java] Class实例的深入理解 [Java]](http://www.mshxw.com/aiimages/31/710551.png)
