将注释合并为一个

时间:2019-07-18 17:32:10

标签: java cdi

我想构建一个从所有其他预定义注释中继承的注释:

@Inherited
@Getter
@Setter
@NoArgsConstructor
@JsonbNillable(value = true)
public @interface Domain {
}

现在我要利用这个:

// domain annotation should inherit annotation @Getter, @Setter, @NoArgsConstructor, @JsonbNillable(value = true) 
@Domain 
public class User{


}

但是,JAVA不支持上面的代码。

我如何在JAVA中做这些事情? CDI或纯JDK是否可能?

我可以使用 CDI刻板印象

@Stereotype
@Getter
@Setter
@NoArgsConstructor
@JsonbNillable(value = true)
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Domain {
}

但是,这种注释不支持某些注释。例如,@Getter仅在类,枚举或字段上受支持。我该如何规避这些事情?

如果我有一个带有已定义批注的抽象类:

@Stereotype
@Getter
@Setter
@NoArgsConstructor
@JsonbNillable(value = true)
public abstract class Model{

}

并使用该类,则注释不会被继承,因为有些注释不能@Inherited。

public class User extends Model{

}

如何将注释合并为一个,因此只能使用一个注释?在JAVA 12中可以吗?

0 个答案:

没有答案