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中阅读它吗?
答案 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
。