Java 为什么必须用类名限定对类的静态访问
为什么必须在类中定义对Java 为什么必须用类名限定对类的静态访问,java,specifications,Java,Specifications,为什么必须在类中定义对类的引用?例如: public class Foo { private static Logger log = LoggerFactory.getLogger(Foo.class); } 既然我已经在Foo类的上下文中,为什么不能调用LoggerFactory.getLogger(class) 15.8.2. 类文字 类文字是一个表达式,由类、接口、数组或基元类型的名称或伪类型void组成,后跟“.”和标记class 允许class表达式应该允许您描述的语法,这不
类的引用
?例如:
public class Foo {
private static Logger log = LoggerFactory.getLogger(Foo.class);
}
既然我已经在Foo
类的上下文中,为什么不能调用LoggerFactory.getLogger(class)
15.8.2. 类文字
类文字是一个表达式,由类、接口、数组或基元类型的名称或伪类型void组成,后跟“.”和标记class
允许class
表达式应该允许您描述的语法,这不会使语言变得模棱两可,但它会覆盖关键字class
,以表示两者
类
类型的实例的引用getClass()
在匿名类中具有相同的含义
去掉两个标记(非限定的类名和
)并不能提供太多的价值,而且可能会在内部类中造成混乱。例如,lambda表达式中的类是什么
15.8.2. 类文字
类文字是一个表达式,由类、接口、数组或基元类型的名称或伪类型void组成,后跟“.”和标记class
允许class
表达式应该允许您描述的语法,这不会使语言变得模棱两可,但它会覆盖关键字class
,以表示两者
一种宣言
对类
类型的实例的引用
您建议的语法可能允许命名匿名类的类,但是getClass()
在匿名类中具有相同的含义
去掉两个标记(非限定的类名和
)并不能提供太多的价值,而且可能会在内部类中造成混乱。例如,lambda表达式中的class
是什么?这就是语言的定义方式。Foo.class是一个类文本(请参阅oracle文档)。您的语法可能有意义,但它不是Java语言的一部分。这就是语言的定义方式。Foo.class是一个类文本(请参阅oracle文档)。您的语法是有意义的,但它不是Java语言的一部分。