我想构建一个从所有其他预定义注释中继承的注释:
@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中可以吗?