在Java中,如何在方法之前调用“@something”?

在Java中,如何在方法之前调用“@something”?,java,Java,当我试图通过创建Minecraft服务器插件来提高Java技能时,我在Bukkit插件开发的代码示例中遇到了一个@EventHandler。这是放在一个方法实现上的,我想知道它叫什么 我记得在别的地方看到过一些@Override,我想知道它叫什么,这样我就可以在线搜索它了。这东西叫做一个。在Python中,Java注释的对应项称为decorators。确实如此 注释是元数据的一种形式,它提供有关程序的数据,而该程序不是程序本身的一部分。注释对其注释的代码的操作没有直接影响 从文档来看,注释的使用

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

我记得在别的地方看到过一些
@Override
,我想知道它叫什么,这样我就可以在线搜索它了。

这东西叫做一个。在Python中,Java注释的对应项称为decorators。

确实如此

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

从文档来看,注释的使用主要是

  • 编译器的信息-编译器可以使用注释来检测错误或抑制警告
  • 编译时和部署时处理-软件工具可以处理注释信息以生成代码、XML文件和 诸如此类
  • 运行时处理-一些注释可在运行时检查

这只是一个注解

@ie重写用于重写扩展“超类”中同名方法的方法。

它是一个


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

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

注释既有a也有a;或者,也可以使用它们,以便您知道此注释在源代码中出现过。现在,谈谈目标和保留,因为这两个“元注释”肯定会对您的预期产生影响:

  • 目标确定该注释可以应用于什么;这可以是一个完整的类、一个实例变量、一个方法、一个。。。好吧,去看医生
  • 保留期决定此注释在源代码中的“持续时间”。大多数情况下使用的两种保留策略是
    源代码
    运行时
在像您这样的注释中,它通常是带有。在运行时,特定的处理代码可以使用这样的注释来更改目标的行为,从而使其行为由该处理代码控制。这种代码在逻辑上称为注释处理器

注释已经开始在一些JSR中占据相当重要的地位:

  • JSR330将
    @Inject
    @Provider
    等定义为运行时注释,以便愿意进行依赖项注入的框架可以依赖于这些注释的存在;例如,对于Dagger和Guice等依赖注入框架(自3.0版起)就是这样
  • JSR 305定义了
    @Immutable
    @ThreadSafe
    @NotThreadSafe
    @Nullable
    @Nonnull
    @Documented
    ;这些注释可以被静态代码分析工具使用,同样重要的是,它们通常也被记录在案。因此,你知道对他们的期望是什么

嗯,它们可以直接影响。。。这一切都取决于它们的保留策略以及代码实际处理的内容does@fge:是的,例如,引入拦截器的EJB注释确实会影响程序行为。@fge:我认为文档讨论的是对注释代码的直接影响,而不是读取注释的代码。@BheshGurung,这是一个不幸,因为注释没有真正的价值,除非它们是经过实际处理的。然而,装饰器的可能副本并不能完全发挥相同的作用;decorator相当于Java的
RetentionPolicy.RUNTIME
注释,带有直接语言注入。Java不是这样工作的。