黑马程序员技术交流社区

标题: 关于TYPE和class的疑问 [打印本页]

作者: 李挺    时间: 2013-2-26 16:52
标题: 关于TYPE和class的疑问
在张老师的视频中有这么一个讲解
Integer.TYPE==int.class //是true

我查了下API:Type 是 Java 编程语言中所有类型的公共高级接口。它们包括原始类型、参数化类型、数组类型、类型变量和基本类型。
就是说Type和Object是对应的,一个是所有类的父类,一个是所有接口的父接口
可是Integer.TYPE==int.class 怎么理解呢


作者: 黄鸿达    时间: 2013-2-26 17:02
TYPE这个常量字段代表这个包装类型所白装类型的字节码。
Integer锁包装的是 int类型
通过Integer.TYPE获取int类型的字节码
int.class也是获取int类型的字节码
Integer.TYPE==int.class 两者都是同一份字节码,所以true
作者: 黑马-张洋    时间: 2013-2-26 17:15
先看int.class
必须知道class
各个java类,它们是否属于同一类,是不是可以用一个类来描述这类事物呢?这个类的名字就是Class。
java程序中的各个java类属于同一类事物,描述这类事物的java类名就是Class。

每个类型都有一个表示自己类型的Class对象,你可以去看API中对于java.lang.Class<T>类的描述
Class对象不需要用equals来判断相等,因为同一个类型的Class对象全局只有一个
所以int.class取到了int类型的一个对象。

再看Integer.TYPE,api上面写了

TYPE
public static final Class<Integer> TYPE表示基本类型 int 的 Class 实例。

从以下版本开始:
JDK1.1

所以两个都是int的对象呗一样了撒

作者: 李挺    时间: 2013-2-26 20:15
黄鸿达 发表于 2013-2-26 17:02
TYPE这个常量字段代表这个包装类型所白装类型的字节码。
Integer锁包装的是 int类型
通过Integer.TYPE获取i ...

TYPE 是常量?
作者: 黄鸿达    时间: 2013-2-26 22:39
李挺 发表于 2013-2-26 20:15
TYPE 是常量?

是的,张老师视频是这么讲
作者: amen0205    时间: 2013-2-27 00:12
TYPE是类类型常量,Integer.TYPE表示基本类型 int 的 Class 实例。而int.class同样表示int的Class实例。二者相同。
作者: 何竹冬    时间: 2013-2-27 01:40
你好,都是在获取int的class实例对象,所以结果为true




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2