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

vhmi4jdf  于 2022-12-21  发布在  Java
关注(0)|答案(3)|浏览(244)

以下是注解代码

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

我希望将datatype设置为可选参数,例如

@ColumnName(value="password")

应为有效代码。

kgqe7b3p

kgqe7b3p1#

看起来official documentation中的第一个例子说明了一切...

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

x4shl7ld2#

要使其可选,您可以为其指定如下默认值:

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

则在使用Annotation时不需要指定。

nfg76nw0

nfg76nw03#

对于自定义类型,您可以执行以下操作

public @interface SomeAnnotation {

  Class<? extends SomeInterface> yourCustomType() default SomeNullInterface.class;
  
}

/**
 * Your custom type
 */
public interface SomeInterface {

}

/**
 * Your fake null value type
 */
public interface SomeNullInterface extends SomeInterface {

}

在代码中的某个地方,可以像这样检查null

if(!yourAnnotation.yourCustomType().isAssignableFrom(SomeNullInterface.class)){
  //your value is null
}

相关问题