2

当我试图通过创建一个 Minecraft 服务器插件来提高我的 Java 技能时,我遇到了@EventHandler一个 Bukkit 插件开发的代码示例。这只是放在一个方法实现上,我想知道它叫什么。

我记得在其他@Override地方看到过一些,我想知道它叫什么,这样我就可以在网上搜索它......

4

5 回答 5

6

这个东西叫做注解。在 Python 中,Java 注释的对应物称为装饰器

于 2013-06-29T17:10:01.220 回答
6

它是注释

注释是元数据的一种形式,提供不属于程序本身的程序的数据。注释对其注释的代码的操作没有直接影响。

从文档中注释的使用主要是

  • 编译器信息——编译器可以使用注解来检测错误或抑制警告。
  • 编译时和部署时处理——软件工具可以处理注释信息以生成代码、XML 文件等。
  • 运行时处理——一些注解可以在运行时检查。
于 2013-06-29T17:10:36.440 回答
2

好的,我不会复制指向注释的链接。相反,我将讨论它们如何运作。

注解有 aTarget和 a Retention; 可选地,它们也可以@Documented让您知道此注释已在您的源代码中的某个时间出现。现在,进入目标和保留,因为这两个“元注释”肯定会对您的预期产生影响:

  • 目标确定该注释可以应用于什么;这可以是一个完整的类、一个实例变量、一个方法、一个......好吧,请参阅文档。
  • 保留决定了此注释在您的源代码中保留多长时间。大多数使用的两个保留策略是SOURCERUNTIME

在像您这样的注释中,它通常是具有运行时保留策略的注释。这样的注解可以在运行时被特定的处理代码用来改变目标的行为,从而使其行为受这个处理代码的控制。这样的代码在逻辑上称为注释处理器

在一些 JSR 中,注释已经开始变得相当重要:

  • JSR 330 将@Inject, @Provideretc 定义为运行时注解,以便愿意进行依赖注入的框架可以依赖这些注解存在;例如,对于 Dagger 和 Guice(从 3.0 版开始)等依赖注入框架就是这种情况;
  • JSR 305 使用源保留策略定义@Immutable, @ThreadSafe, @NotThreadSafe, @Nullable,@Nonnull@Documented; 这些注释可以被静态代码分析工具使用,同样重要的是,它们通常@Documented也是如此。因此,您知道对他们有什么期望。
于 2013-06-29T17:16:28.080 回答
0

它只是一个注释。

@Override for ie 用于在扩展的“超类”中覆盖具有相同名称的方法的方法

于 2013-06-29T17:12:00.823 回答
0

这是一个注释

虽然它通常对代码没有直接影响,但某些对象数据库可能会使用它来指定一个或多个字段在索引、键控或其他功能方面的行为。

于 2013-06-29T17:12:24.867 回答