如何为自己的注释创建可选参数?

Bij*_* CD 83 java annotations

以下是注释代码

public @interface ColumnName {
   String value();
   String datatype();
 }
Run Code Online (Sandbox Code Playgroud)

我想做datatype一个可选参数,例如

@ColumnName(value="password") 
Run Code Online (Sandbox Code Playgroud)

应该是一个有效的代码.

Rid*_*del 118

似乎官方文档中的第一个例子说明了一切......

/**
 * Describes the Request-For-Enhancement(RFE) that led
 * to the presence of the annotated API element.
 */
public @interface RequestForEnhancement {
    int    id();
    String synopsis();
    String engineer() default "[unassigned]"; 
    String date()     default "[unimplemented]"; 
}
Run Code Online (Sandbox Code Playgroud)

  • 没有区别.它们只是字符串值.他们可能是"彼得"和"保罗". (15认同)
  • 如果我的参数是'Class <?>?s怎么办? (5认同)
  • 谢谢!官方文档可能有示例,但这篇 SO 帖子是我的 Goggle 搜索中的热门帖子,因此您的回复和链接很有帮助! (4认同)
  • 我只看了教程。即为什么我找不到这个。我可以知道未分配和未实现之间的区别吗 (2认同)
  • 在这种情况下,Java 的类型系统仍然适用。例如 `Class&lt;?&gt; proxy() 默认 Object.class` (2认同)

Joh*_*ter 34

要使其可选,您可以为其指定一个默认值:

public @interface ColumnName {
   String value();
   String datatype() default "String";
 }
Run Code Online (Sandbox Code Playgroud)

然后在使用Annotation时不需要指定它.