为什么我必须在其定义的类中限定对class
的引用?例如:
public class Foo {
private static Logger log = LoggerFactory.getLogger(Foo.class);
}
为什么我不能只调用LoggerFactory.getLogger(class)
因为我已经在Foo
类的上下文中?
答案 0 :(得分:4)
JLS定义
15.8.2。类文字
类文字是一个表达式,由类,接口,数组或基本类型的名称或伪类型void组成,后跟一个'。'和令牌
class
。
它不会使语言含糊不清以允许class
表达式允许您描述的语法,但它会涉及重写关键字class
以表示两者
Class
类型实例的引用。您建议的语法可能允许命名匿名类的类,但getClass()
在匿名类中具有相同的含义。
摆脱两个标记(非限定类名和.
)并没有提供太多价值,它可能会导致内部类混淆。例如,lambda表达式中的class
是什么?