@interface在Java中是关键字吗?

@interface在Java中是关键字吗?,java,Java,为什么所有其他注释都大写并在某处定义,而@interface却不是?这是否意味着它是一个关键词 @interface在Java中是关键字吗 不,根据的说法,interface是一个关键字,但不是@interface 为什么所有其他注释都大写并在某处定义,而@interface却不是?这是否意味着它是一个关键词 : 注释类型声明指定一种新的注释类型,一种特殊的接口类型。为了将注释类型声明与普通的接口声明区分开来,关键字接口前面有一个at符号(@) 通常在@符号后大写字母,因为这是注释的名称。定义注

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

@interface在Java中是关键字吗

不,根据
的说法,interface
是一个关键字,但不是
@interface

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

:

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


通常在
@
符号后大写字母,因为这是注释的名称。定义注释时,只需使用
@接口
组合。这与类和其他接口(以及枚举)相同,关键字
/
接口
/
枚举
为小写,但类型名称(应)以大写开头

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

    @MyAnnotation
//   ^uppercase
    public class MyClass {...}
@interface在Java中是关键字吗

不完全是。关键字是
接口
。在源代码中编写
@interface
时,它相当于编写
@interface
。(注意
@
界面
关键字之间的空格。)

这将在中解释,并附加说明:

请注意,at符号(
@
)和关键字
接口
是不同的标记。可以用空格分隔它们,但出于风格的考虑,不建议这样做


为什么

他们使用了
@
接口
,因为注释是一种接口。联合联络小组是这样说的

至于为什么
接口
而不是
接口
,这是一种折衷:

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

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

  • 另一方面,他们不可能使用
    @annotation
    annotation
    ,因为
    annotation
    没有保留,以便在Java还是一种年轻的语言时将来用作关键字

我想他们解决这个问题的办法是说,
@interface
不是注释,因此与“其他”注释1不一致

然而,这只是猜测。设计决策实际做出时,我们不在场



1-有些人认为,由于
@接口
“看起来像”一个注释,所以它就是一个注释。对于这些人来说,小写字母应该是一个语义线索,表明他们的心智模式不正确,并暗示他们应该查找和阅读JLS对此的说明。JLS不是特别容易阅读,但是如果你看PDF版本,它组织得很好,可以搜索。

为什么很难,因为它取决于语言设计者的突发奇想。我猜:
@interface
重用了已定义的关键字
interface
,并且使用小写。其他注释以大写开头,因为它们基于类的概念,在Java中,按照惯例,类是大写的。例如,
public@interface Override{}
@markspace注释是接口的一种类型(而不是类型的技术含义),这就是为什么它们使用相同的关键字。注释名称以大写开头,因为它是类型(类、接口、枚举、注释)的名称。
@inteface
声明不是注释。“你通常在@符号后大写字母”,但你通常不大写关键字
interface
@LewBloch。是的,我是这么说的。是的,除了调用
@interface
一个“标识符”。实际上是两个令牌,它们都不是标识符。