当我试图通过创建一个Minecraft服务器插件来提高我的Java技能时,我在Bukkit插件开发的代码示例中遇到了@EventHandler
。这只是在一个方法实现上,我想知道它叫什么。
我记得在其他地方见过一些@Override
,我想知道它叫什么,所以我可以在网上搜索...
答案 0 :(得分:6)
这个东西叫做 annotation 。在Python中,Java注释的对应部分称为 decorators 。
答案 1 :(得分:6)
注释是一种元数据形式,它提供有关不属于程序本身的程序的数据。注释对它们注释的代码的操作没有直接影响。
从文档中,注释的使用主要是
- 编译器的信息 - 编译器可以使用注释来检测错误或抑制警告。
- 编译时和部署时处理 - 软件工具可以处理注释信息以生成代码,XML文件和 等等。
- 运行时处理 - 可以在运行时检查某些注释。
答案 2 :(得分:2)
好的,我不会复制注释内容的链接。相反,我将讨论他们可以如何运作。
注释同时包含Target
和Retention
;可选地,它们也可以是@Documented
,以便您知道此注释在源代码中已存在。现在,由于这两个“元注释” 肯定会对你所期望的事物产生影响,因此在目标和保留上:
SOURCE
和RUNTIME
。在诸如你的注释中,它通常是带有runtime retention policy的注释。这种注释可以在运行时由特定处理代码使用,以改变目标的行为,使得其行为由该处理代码控制。此类代码在逻辑上称为注释处理器。
注释在一些JSR中已经开始变得非常重要:
@Inject
,@Provider
等定义为运行时注释,以便愿意执行依赖注入的框架可以依赖于存在的这些注释;例如,对于依赖注入框架,例如Dagger和Guice(从3.0版开始)就是这种情况; @Immutable
,@ThreadSafe
,@NotThreadSafe
,@Nullable
,@Nonnull
,@Documented
;静态代码分析工具可以使用这些注释,同样重要的是,它们通常也是@Documented
。因此,您知道对他们的期望。答案 3 :(得分:0)
这只是一个注释。
@Override for ie用于覆盖扩展“超类”中具有相同名称的方法的方法
答案 4 :(得分:0)
这是一个annotation。
虽然它通常对代码没有直接影响,但某些对象数据库可能会使用它来指定一个或多个字段在索引,键控或其他功能方面的行为。