java - 可用的java注释重载吗?

标签 java annotations overloading

我定义一个注释。

@Documented
@Target(value = ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiParameter {
public String name() default "";

public String type() default "";

public String desc() default "";
}

我可以像上面一样在方法参数声明中使用这个注释。

...
@ApiParameter(desc="for desc") String userName,
@ApiParameter(name="for name", desc="for desc") String address,
@ApiParameter(name="for name",type="for type",desc="for desc") Order order
...

如何像上面那样使用?我想避免输入字段名称。

...
@ApiParameter("for desc") String userName,
@ApiParameter("for name", "for desc") String address,
@ApiParameter("for name","for type" "for desc") Order order,
...

请帮忙~

最佳答案

单元素注释[JLS-9.7.3 ] 允许使用

@Identifier ( ElementValue )

作为 @Identifier(value = ElementValue) 的简写。

仅当您的注释类型具有 value 元素且所有其他元素(如果有)具有默认值时,您才能使用单元素注释。

如果您绝对必须避免在注释中使用字段名称,您可以使用单个 String[] value() 元素创建注释。

public @interface ApiParameter {
    public String[] value();
}

然后将其用作

@ApiParameter({"for name", "for desc"}) String param

但是,我认为此解决方案比您当前的解决方案不太清晰且更容易出错,并且您还必须在通过注释访问数组时检查数组是否具有正确数量的元素。

关于java - 可用的java注释重载吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20490270/

相关文章:

c# - 通用属性比较 - 识别属性变化

java - 插入数据库后,第一次没有读取该值

java - 自动生成 HTTP 屏幕抓取 Java 代码

快速适配注释

java - 自定义注释驱动开发

C++在类函数中和类外写入文件

Java子链表内存分配

java - 为什么我们不能将两个推断变量作为匿名类相互分配?

java - 什么时候在java中使用@Override

c# - 如何更改此设计以避免沮丧?