【问题标题】:Java annotations fundamentalsJava注解基础
【发布时间】:2015-05-30 19:49:44
【问题描述】:

我是注释的新手。我已经阅读了很多解释注释概念的教程。但是我在任何地方都找不到关于在一个类中定义多个注释的信息。所以请给我一些关于定义和访问多个注释的见解。下面是我在一个类中定义两个注释的代码,eclipse IDE给我一个错误“公共类型SampleAnn必须在它自己的文件中定义”..是原因对于这个错误,因为 java 约定“在类名的名称中每个类应该只有一个公共注释”?

@Documented
@Target(ElementType.LOCAL_VARIABLE)
@Inherited
@Retention(RetentionPolicy.RUNTIME)
public @interface MethodInfo{
int number1;
}

@Documented
@Target(ElementType.LOCAL_VARIABLE)
@Retention(RetentionPolicy.RUNTIME)
public @interface SampleAnn{
int number2;
}

【问题讨论】:

  • 注解是类,Java 中每个文件不能有多个公共*类。

标签: java annotations


【解决方案1】:

你是对的,一个文件中只能有一个*类。

但是你能做什么:

public class MyAnnotations {

   public @interface SampleAnn { ... }
   public @interface MethodInfo { ... }
}

【讨论】:

    【解决方案2】:

    通常每个类文件都应该有一个公共 CLASS,注释也不例外。任何公开定义的实体与其 java 文件的名称同名也很重要,所以我看不出如何在同一个文件中有两个。

    【讨论】:

      【解决方案3】:

      注释需要位于单独的编译单元(文件)中。

      规范规定的*类:

      这个限制意味着每个人最多只能有一个这样的类型 编译单元。此限制使 Java 编译器变得容易 在包中查找命名类。在实践中,很多程序员 选择将每个类或接口类型放在自己的编译中 单元,无论它是公开的还是在其他代码中被引用 编译单元。

      Specification

      【讨论】: