Class实例的深入理解 [Java]

Class实例对应的结构的说明

Class类的全类名:

java.lang.Class

我们之前说过: 一个Class类的实例就代表了一个运行时类,那么Class类的实例只能表示java中的类吗?我们java中的结构还有很多,比如接口 , 枚举类, 基本数据类型, 还有注解标签, 还有数组, 那么这些结构有没有对应的Class类的实例?
  • 其实,我们这里说的这几种结构都是可以作为CLass类的实例的

那么下面我们就总结一下 : 哪些类型(结构)可以作为Class类型的对象

  1. class(类) :
    • 分为外部类, 成员内部类, 静态内部类, 局部内部类, 匿名内部类当等等

eg:

Class c1 = Object.class;
Class c2 = String.class;
  1. interface(接口):

eg:

Class c3 = Comparable.class;
  1. 数组 (有一位数组和二维数组)

eg:

Class c4 = int[].class;
Class c5 = int[][].class;
  1. enum(枚举):

eg:

//这里的ElementType是我们自定义的一个枚举类
Class c6 = ElementType.class;
  1. annotation(注解标签)

eg:

Class c7 = Override.class;
  1. primitive type(基本数据类型)

eg:

Class c8 = int.class;
  1. void(空值)
    • 记住: 所有返回值类型都是可以作为Class类的实例的
      • 而void也是属于返回值的一种
      • 返回值类型包括了基本数据类型,引用类型和void
注意: Class类本身也是类,那么Class类本身也就是一个Class类的实例
  • 也就是: 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类型
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值