我们有一个相当复杂的注释结构,可以放在一个字段上。这种结构被放置在很多字段上,只有 1 个参数发生变化。剩下的只是复制粘贴代码。这种方法有效,但有点难看:
@Type(type = "com.company.ConstantClass", parameters = @Parameter(name = "parameterClass", value = "com.company.ChangingClass"))
ChangingClass parameter;
在上面的例子中,只有参数 value
会改变,其余的只是复制粘贴。
我想做的是创建一个只有 value
参数的“快捷方式”注释。当我们这样做时,参数可以从 String
更改为 Class
,以使代码不易受重构错误的影响。
例如:
@Shortcut(value = ChangingClass.class)
ChangingClass parameter;
一个问题是@Type
注解只能放在字段或方法上,所以我不能简单地创建一个“带注解的注解”。
最佳答案
你问的是不可行的。 您可以做的是指定默认值。
public @interface Type
{
String type() default "com.company.ConstantClass";
Parameter parameter();
}
public @interface Parameter
{
String name() default "parameterClass";
String value();
}
我认为结果很干净。
@Type(parameter = @Parameter("com.company.ChangingClass"))
private ChangingClass parameter;
或者,您必须重构提取注释值的代码以使用默认值。这样您就可以拥有仅具有单个属性的注释。
关于Java:如何简化复杂的注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48386072/