Java 中的注释具有函数(在某些方面其行为类似于属性或字段),并且可能具有默认值。 例如:
public @interface Foo {
int value() default 1;
}
但是,注释不能具有带有实际主体的方法,即使标记为
default
。
public @interface Foo {
int value() default 1;
default int add(int addend) { // NOT ALLOWED
return value() + addend;
}
}
Java 语言规范在第 9.6.1 节中指定禁止这样做:
根据上面的语法,注解接口声明中的方法声明不能有形式参数、类型参数或 throws 子句;并且不能是私有的、默认的或静态的。因此,注解接口不能具有与普通接口相同的多种方法。存在哪些
技术原因导致难以或无法支持(如果有)? 我并不是在问为什么 Java 设计者可能决定他们不想想要支持这一点——我完全知道这对于 StackOverflow 来说不是一个好问题——但前提是存在可能阻止 JDK 的特定已知问题开发人员不要添加这样的功能。
在我看来,以下是涉及该主题的 Java 语言技术方面的一些原因:
我相信“让事情保持简单和可扩展”是避免用语言实现此类功能的一个很好的技术原因。