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


89

以下是注释代码

public @interface ColumnName {
   String value();
   String datatype();
 }

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

@ColumnName(value="password") 

应该是有效的代码。

Answers:


125

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

/**
 * 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]"; 
}

1
我只看了tutorials.ie为什么找不到这个。我可能知道未分配和未实现之间的区别
Biju CD 2010年

16
没有区别。它们只是字符串值。它们可以是“彼得”和“保罗”。
sparkyspider 2012年

5
如果我的参数是Class<?>s怎么办?
以太坊'16

在这种情况下,Java的类型系统仍然适用。例如Class<?> proxy() default Object.class
迈克尔·米勒

35

要使其可选,您可以为它分配一个默认值,如下所示:

public @interface ColumnName {
   String value();
   String datatype() default "String";
 }

然后,在使用注释时无需指定它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.