@interface是Java中的关键字吗?

时间:2017-05-14 02:18:45

标签: java

为什么所有其他注释都在某处大写并定义,但@interface不是?这是否意味着它是关键字?

2 个答案:

答案 0 :(得分:3)

  

@interface是Java中的关键字吗?

不完全是。关键字为interface。在源代码中编写@interface时,它等同于编写@ interface。 (请注意@interface关键字之间的空格。)

JLS 9.6.中附有说明:

  

"请注意,at-sign(@)和关键字interface是不同的令牌。可以用空格分隔它们,但不鼓励这种风格。"

  

怎么来......

他们使用@ interface因为注释是一种界面。 JLS这样说。

至于为什么interface而不是Interface,这是妥协:

  • 一方面,interface是Java中的关键字,他们需要在该上下文中使用关键字而不是普通标识符。

  • 另一方面,@interface和常规注释之间存在明显的不一致...其中Java样式规则表明注释标识符应以大写字母开头。

    < / LI>
  • 另一方面,他们无法使用@annotationannotation,因为annotation不是保留以供将来使用作为一个关键词,当Java是一种年轻的语言时。

我猜他们通过这样说来解决这个问题......好吧...... @interface根本不是注释(并且它不是),并且明显的不一致是因为程序员认为@interface&#34;看起来像&#34;注释它是一个。从那个POV,小写字母是用户的语义线索......这不是他们的想法!

然而,这是猜测。在做出设计决定时,我们并不在场。

答案 1 :(得分:2)

  

@interface是Java中的关键字吗?

不,根据JLS 3.9. Keywords interface是一个关键字,但不是@interface

  

为什么所有其他注释都在某处大写并定义,但@interface是不是?这是否意味着它是关键字?

JLS 9.6. Annotation Types

  

注释类型声明指定一种新的注释类型,一种特殊的接口类型。为了区分注释类型声明和普通interface声明,关键字接口前面是一个at符号(@)。

您通常会在@符号之后大写字母,因为它是注释的名称。定义注释时,只需使用@interface组合。这与类和其他接口(和枚举)相同,关键字class / interface / enum是低位的,但类型的名称(应该)以大写字母开头。< / p>

public @interface   MyAnnotation {...}
//      ^lowercase  ^uppercase

然后

    @MyAnnotation
//   ^uppercase
    public class MyClass {...}