Java注解是否应该被视为一种语言或库功能。我指的不是注解的概念,它显然是一种语言功能,但具体的注解,如@Override和@Deprecated?
似乎更清楚的是,只有第三方库支持的批注(例如Hibernate批注)显然不是Java语言的一部分,但对于内置批注,我就不那么确定了。
如果这篇文章被认为过于离经叛道,请随意转到programmers.stackexchange.com
发布于 2011-09-16 08:17:56
以下是我对此的看法:
boolean isLanguageFeature(foo)
{
return JLS.contains(foo)
}JLS描述了编程语言Java。正如您清楚地了解的那样,注释的概念是一种语言特性。另一方面,JLS没有描述大量的标准Java库特性,比如Collections API。
来自JLS §9.6.1, Predefined Annotation Types
在
平台的库中预定义了几种注释类型。其中一些预定义的注释类型具有特殊的语义。这些语义在本节中指定。本节不会为中包含的预定义注释提供完整的规范;这就是适当的API规范的作用。只有那些需要Java编译器或虚拟机的特殊行为的语义才会在这里指定。
根据这些思路,我会说Java注解是一个库特性。
发布于 2011-09-16 08:39:54
像@Deprecated和@Override这样的批注是语言工具用来强制和/或描述代码行为的库功能。绝对是库特性。
发布于 2011-09-16 08:11:50
注释用于(在Java中)向代码中添加元数据。注释是编写可读性和可维护性代码的方法。因此,要编写好的代码,请使用注释,无论它们是Java注释还是其他第三方。
例如,想让EJB变成无状态,现在你只需要添加@Stateless注释即可。
https://stackoverflow.com/questions/7438850
复制相似问题