你在哪里';超级'';类别';和';这';用java定义的关键字?

你在哪里';超级'';类别';和';这';用java定义的关键字?,java,super,Java,Super,昨晚我突然想到,这些关键词到底是在哪里定义的。例如,假设我们有 public class A { public void doSomething() { // Only for illustration. A.super.hashCode(); A.class.getClass(); } } 从用法来看,这些关键字“super”、“class”、“this”看起来像静态的(类级别)。这些不是静态的吗?''.'运算符]如何知道它在

昨晚我突然想到,这些关键词到底是在哪里定义的。例如,假设我们有

public class A {
    public void doSomething() {
        // Only for illustration.
        A.super.hashCode(); 
        A.class.getClass();
    }
}
从用法来看,这些关键字“super”、“class”、“this”看起来像静态的(类级别)。这些不是静态的吗?''.'运算符]如何知道它在这里必须有不同的行为,而不认为它们是静态的。 这些关键字是在哪里定义的

它们在中定义

从用法来看,这些关键字“super”、“class”、“this”看起来像静态的(类级别)

不,他们没有。考虑<代码> .HASCODE()< <代码> > < /P> 这些不是静态的吗

是的,是的

如何,“点运算符”知道它在这里必须有不同的行为,而不认为它们是静态的。


与任何其他对象引用相同。这是一项语义分析任务。

它们是在Java语言规范中定义的。点运算符什么都不知道。Java编译器知道如何处理关键字和运算符,并验证代码是否符合Java语言规范。好的@这更有意义。我认为除了你所提供的之外,这也很有用@AdityaBahuguna和,但这些不是关键词的定义。是的。但这些链接肯定会增加这些特殊关键字的使用和解释,因为它们是特殊的,所以更有意义。谢谢@AdityaBahuguna问题是它们的定义在哪里。所有的关键词都是“特别的”。是的,我认为问题的语言和我想问的或想找的东西是不一样的。JLS#3.9在我看来更像是一种声明,即这些是关键词。定义不应该包括更多的细节吗?与注释中的这些链接类似,注释中的链接提供了关于这些链接的用法和语义的更多见解。