注释中是否有可能实现接口?类似的东西:
public @interface NotNull implements LevelInterface {
ValidationLevel level();
};
答案 0 :(得分:12)
不,编译器说:
注释类型声明不能具有显式的超接口
您无法延伸:
注释类型声明不能具有显式超类
答案 1 :(得分:12)
不,注释不能有超级接口 * (尽管接口可以从注释扩展,类可以实现注释,这两种方式都是非常糟糕的实践)
[*]有趣的是:我找不到任何明确说明的文档,除了java编译器输出(Sun Java Tutorial和Java 1.5 Annotations specification)子>
答案 2 :(得分:4)
不,你不能(如我的评论所述)。您可以使用委托(如AlexR所述)。但是,您必须使用枚举:
public enum LevelEnum implements LevelInterface {
DEFAULT {
public ValidationLevel level() {
// SNIP (your code)
}
};
}
public @interface NotNull {
LevelEnum level() default LevelEnum.DEFAULT;
}
答案 3 :(得分:1)
简短回答是否定(正如Thilo所说)。
如果你真的希望这样的功能可以使用委托,那么很长的答案是:注释可以包含任意数量的字段,这些字段可以实现任意数量的接口。请参阅以下示例:
public interface LevelInterface {
public int level();
}
public static LevelInterface foo = new LevelInterface() {
@Override
public int level() {
return 123;
}
};
public @interface NotNull {
LevelInterface level = foo;
}