T.class:请帮帮我,在文档中找到它

时间:2014-04-19 15:58:08

标签: java

Cay Horstmann在他的书“核心Java”中描述了这种获取Class

类型对象的方法
  

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

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

注意一个Class对象   真的描述了一种类型,它可能是也可能不是类。例如,   int不是类,但int.class仍然是类型的对象   类。

我已经通过java.util进行了扫描,无法解释这里写的是什么。那个"班级"似乎是一个领域。 Object类的字段。虽然它与Horstmann先生所写的引用java.util的内容相矛盾。好吧,我已经走到了尽头。你能指出我在哪里可以在javadoc中阅读它吗?

2 个答案:

答案 0 :(得分: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

     

类文字计算命名类型的Class对象(或   对于void),由类的定义类加载器(第12.2节)定义   当前实例。

答案 1 :(得分:2)

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

  

类文字是一个表达式,由类,接口,数组或基本类型的名称或伪类型void组成,后跟“。”。和令牌类。

     

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

     

p.class的类型,其中p是基本类型的名称(第4.2节),是Class<B>,其中B是{{1}类型的表达式的类型拳击转换后(§5.1.7)。

     

p(§8.4.5)的类型为void.class