“class”方法/字段从哪里来?我在API中找不到任何有关它的信息。Java - “class”方法/字段从哪里来?
代码例如:
public class SomeClass{
public static void main(String[] args){
System.out.println(SomeClass.class);
}
}
输出:类SomeClass的
“class”方法/字段从哪里来?我在API中找不到任何有关它的信息。Java - “class”方法/字段从哪里来?
代码例如:
public class SomeClass{
public static void main(String[] args){
System.out.println(SomeClass.class);
}
}
输出:类SomeClass的
这是 “编译器魔术” 称为类字面:
类literal是表达由以下组成的类,接口,数组或原始类型的名称,或伪类型void,后跟
'.'
和令牌class
(JLS 15.8.2)
换句话说,虽然类没有静态成员称为class
,编译器的行为就好像他们这么做,将引用根据需要相应Class
对象。
不完全如此。这是从Java API:
也可以得到Class对象使用类文字命名类型(或 无效)。请参阅Java™语言 规范的Section 15.8.2。例如:
System.out.println("The name of class Foo is: "+Foo.class.getName());
所以更多的信息,你应该只是看看Section 15.8.2 of The Java™ Language Specification。
它在语言中定义 – litelite
你在说什么方法? – talex
class是一个保留关键字,因此它不能是字段或方法的名称。所以编译器知道如何处理它。 –