' super',' class'和'这个' java中定义的关键字?

时间:2017-10-29 08:35:12

标签: java super

这昨晚让我感到震惊,这些关键字确切定义在哪里。举个例子,假设我们有

public class A {
    public void doSomething() {
        // Only for illustration.
        A.super.hashCode(); 
        A.class.getClass();
    }
}

从使用情况来看,这些关键字' super',' class',' this'看起来像静态(类级别)。这些不是静态的吗? ' [点操作员]如何知道它必须在这里表现不同,而不是将它们视为静态。

1 个答案:

答案 0 :(得分:3)

  

这些关键字究竟在哪里定义

它们在Java Language Specification #3.9

中定义
  

从使用情况来看,这些关键字' super',' class',' this'看起来像静态(类级别)。

不,他们不是。考虑a.hashCode()

  

这些不是静态的吗?

是的,是的。

  

'。' [点运算符]如何知道它必须在这里表现不同,而不是将它们视为静态。

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