我们如何在Java中的方法之前调用`@ something`?

时间:2013-06-29 17:09:10

标签: java

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

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

5 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:6)

Annotation

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

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

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

答案 2 :(得分:2)

好的,我不会复制注释内容的链接。相反,我将讨论他们可以如何运作。

注释同时包含TargetRetention;可选地,它们也可以是@Documented,以便您知道此注释在源代码中已存在。现在,由于这两个“元注释” 肯定会对你所期望的事物产生影响,因此在目标和保留上:

  • 目标确定可以应用注释的内容;这可以是整个类,实例变量,方法,......嗯,请参阅文档。
  • 保留确定此注释在源代码中的持续时间。大多数使用的两种保留政策是SOURCERUNTIME

在诸如你的注释中,它通常是带有runtime retention policy的注释。这种注释可以在运行时由特定处理代码使用,以改变目标的行为,使得其行为由该处理代码控制。此类代码在逻辑上称为注释处理器

注释在一些JSR中已经开始变得非常重要:

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

答案 3 :(得分:0)

这只是一个注释。

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

答案 4 :(得分:0)

这是一个annotation

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