为什么所有其他注释都在某处大写并定义,但@interface不是?这是否意味着它是关键字?
答案 0 :(得分:3)
@interface是Java中的关键字吗?
不完全是。关键字为interface
。在源代码中编写@interface
时,它等同于编写@ interface
。 (请注意@
和interface
关键字之间的空格。)
JLS 9.6.中附有说明:
"请注意,at-sign(
@
)和关键字interface
是不同的令牌。可以用空格分隔它们,但不鼓励这种风格。"
怎么来......
他们使用@
interface
因为注释是一种界面。 JLS这样说。
至于为什么interface
而不是Interface
,这是妥协:
一方面,interface
是Java中的关键字,他们需要在该上下文中使用关键字而不是普通标识符。
另一方面,@interface
和常规注释之间存在明显的不一致...其中Java样式规则表明注释标识符应以大写字母开头。
另一方面,他们无法使用@annotation
或annotation
,因为annotation
不是保留以供将来使用作为一个关键词,当Java是一种年轻的语言时。
我猜他们通过这样说来解决这个问题......好吧...... @interface
根本不是注释(并且它不是),并且明显的不一致是因为程序员认为@interface
"看起来像"注释它是一个。从那个POV,小写字母是用户的语义线索......这不是他们的想法!
然而,这是猜测。在做出设计决定时,我们并不在场。
答案 1 :(得分:2)
@interface是Java中的关键字吗?
不,根据JLS 3.9. Keywords interface
是一个关键字,但不是@interface
。
为什么所有其他注释都在某处大写并定义,但@interface是不是?这是否意味着它是关键字?
注释类型声明指定一种新的注释类型,一种特殊的接口类型。为了区分注释类型声明和普通
interface
声明,关键字接口前面是一个at符号(@)。
您通常会在@
符号之后大写字母,因为它是注释的名称。定义注释时,只需使用@interface
组合。这与类和其他接口(和枚举)相同,关键字class
/ interface
/ enum
是低位的,但类型的名称(应该)以大写字母开头。< / p>
public @interface MyAnnotation {...}
// ^lowercase ^uppercase
然后
@MyAnnotation
// ^uppercase
public class MyClass {...}