如何将所有其他注释大写并在某处定义,但@interface不是?这是否意味着它是一个关键字?@interface是Java中的关键字吗?
回答
@interface是在Java中的关键字?
不完全是。关键字是interface
。当您在源代码中编写@interface
时,它相当于编写@ interface
。 (注意@
和interface
关键字之间的空间。)
这在JLS 9.6.与附加注释解释:
“请注意,在符号(
@
)和关键字interface
是不同令牌,可以用空格将它们分开,但这是一种风格问题,不鼓励。“
怎么会......
那么他们用@
interface
因为注释是一种接口。 JLS这样说。
至于为什么interface
而不是Interface
,这是一个妥协:
,一方面,
interface
是Java中的关键字,并且他们需要使用关键字,而不是一个普通的标识符上下文。另一方面,您在
@interface
和常规注释之间有明显的不一致...... Java样式规则说注释标识符应该以大写字母开头。在另一方面再次,他们不能使用
@annotation
或annotation
因为annotation
不是保留以备将来使用的关键字回来时的Java是一个年轻的语言。
我猜他们说的是解决了这个......嗯...... @interface
是不是在所有的注释(这是不是),以及明显不一致是因为程序员觉得既然@interface
“看起来像“它是一个注释。从这个POV中,小写字母是用户的语义线索......这不是他们认为的!
但是,这是猜测。实际设计决策时我们并不在场。
你在坏的地方得到了一个换行符 - 你至少在我的屏幕上看不到'@interface'中的空格。 – user1803551
固定。 (它在我的屏幕上看起来OK!) –
现在看起来不错。 (我猜这取决于屏幕!) – user1803551
是@interface在Java中的关键字?
没有,根据JLS 3.9. Keywordsinterface
是一个关键字,而不是@interface
。
如何将所有其他注释大写和定义在某处,但@interface不是?这是否意味着它是一个关键字?
的注释类型声明指定一个新注释类型,一种特殊的接口类型。为了将注释类型声明与正常的
interface
声明区分开来,关键字接口前面有一个符号(@)。
您通常在@
符号之后大写字母,因为这是注释的名称。在定义注释时,您只需使用@interface
组合。这与类和其他接口(和枚举)相同,关键字class
/interface
/enum
是lowecase,但类型(应该)的名称以大写字母开头。
public @interface MyAnnotation {...}
// ^lowercase ^uppercase
然后
@MyAnnotation
// ^uppercase
public class MyClass {...}
“您通常在@符号后面加上大写字母”但您通常不会将关键字'interface'大写。 –
@LewBloch是的,这就是我所说的。 – user1803551
是的,除了调用'@ interface'“一个”标识符。它实际上是两个令牌,它们都不是一个标识符。 –
- 1. 这是使用java关键字“interface”的正确位置吗?
- 2. 'value'是一个java关键字吗?
- 3. 是'(A)'的关键字吗?
- 4. 注解类“public static @interface”中的static关键字是什么?
- 5. 'file'是python中的关键字吗?
- 6. 是javascript中的关键字不好吗?
- 7. 是$ _SESSION ['user_id']中的'user_id'关键字吗?
- 8. Java中的native关键字是什么?
- 9. 什么是Java中的关键字?
- 10. 在idthon中`id`是关键字吗?
- 11. 在Python中是'输入'关键字吗?
- 12. Java中是否有任何关键字与C#中的'AS'关键字相似?
- 13. 是java扩展关键字的一个引用变量吗?
- 14. 什么是Java的“自我”关键字
- 15. 是Hive中的“关注”保留关键字吗?
- 16. throw关键字在Java中
- 17. 是Python中的关键字
- 18. '是'VB.NET关键字与Object.ReferenceEquals相同吗?
- 19. 这是Java中Interface的正确结构吗?
- 20. Java新关键字
- 21. Java类关键字
- 22. 字是节点js中的关键字吗?
- 23. 关于关键字, “新” 在Java中
- 24. scipy.stats.gaussian_kde中的关键字有误吗?
- 25. Java子串的关键字
- 26. 是Java单例类中必需的最后一个关键字吗?
- 27. Python中的'is'关键字与JS中的===关键字相同吗?
- 28. 关键等效NSTextfield像Interface Builder
- 29. 在java中的转到和关键字
- 30. 目标C中的Java关键字C
“为什么”很难,因为它取决于语言设计师的兴致。我的猜测是:'@interface'重新使用了已经定义的小写字母“interface”。其他注释以大写字母开头,因为它们基于类的概念,在Java中按惯例是大写的。例如。 'public @interface覆盖{}'。 – markspace
@markspace注解是接口的类型(不是*类型*的技术含义),这就是为什么他们使用相同的关键字。注释名称以大写字母开头,因为它的名称是* type *(class,interface,enum,annotation)。 '@ inteface'声明不是注释。 – user1803551