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