2014-04-19 15 views
0

礁HORSTMANN在他的著作Java核心中描述了获得Class类型的对象这种方法T.class:帮我请,发现它的文档

如果T是任何Java类型,然后T. class是匹配的类对象。对于 例如:

Class cl1 = Date.class; // if you import java.util.*; 
Class cl2 = int.class; 
Class cl3 = Double[].class; 

注意,一类对象 确实描述了一种类型,其可以是或可以不是一类。例如, int不是一个类,但int.class仍然是 类的对象。

我扫描了java.util,无法解释这里写的是什么。这个“阶级”似乎是一个领域。 Object类的字段。虽然它与引用java.util的Horstmann先生的着作相矛盾。那么,我已经走到了我的智慧的尽头。你能指出我可以在javadoc中读到哪些内容吗?

回答

2

它不在javadoc中,因为它不是你调用的方法 - 它是语言语法的一部分。这是一个类字面,其在Java Language Specification section 15.8.2描述:

字面的类组成的一类,接口,数组或基本类型或伪型空隙的名称的,表达随后由'。'和令牌类。

C.class的类型,其中C是类别,接口或数组类型(§4.3)的名称,是Class<C>

类型的p.class,其中p是基本类型(§4.2)的名称,是Class<B>,其中B是p类型的表达式的装箱转换(§5.1.7)后的类型。

void.class(§8.4.5)的类型是Class<Void>

2
// if you import java.util.*; 

Date类是java.util,所以你需要import它。该语句与类文字无关,这是TypeName.class的语法被调用的语法。

What is a class literal in Java?

Class literals in the Java Language Specification.

类字面被组成的一类, 接口,数组或基本类型或伪型void的名称的表达,通过随后 '.'和令牌class

类字面的计算结果为如通过定义类装载器当前实例的(§12.2)类的 定义的Class对象为指定类型(或 为void)。