【发布时间】:2014-04-21 15:42:55
【问题描述】:
今天瞥见了注解的奇妙世界,于是尝试了自己的代码,但它并不想编译:
public @interface SomeAnnotation {
public String sayHello1() default "Hello world";
default public String sayHello2() {
return "Hello world";
}
}
您在sayHello1 中看到的是如何指定注释的默认参数。
不过我想知道的是,为什么不允许使用 sayHello2,它从 Java 8 开始就可用。
对我来说,它似乎提供了相同的功能,还是我在这里遗漏了什么?
另外,为什么注解从 Java 5 开始就可以访问默认方法体(尽管非常简单),而接口必须等到 Java 8?
【问题讨论】:
-
What I am wondering though, is why sayHello2 is not allowed since Java 8.我用 jave JDK7 编译器说default methods are not supported in -source 1.7 (use -source 8 or higher to enable default methods) -
注解没有默认的方法体。它们只有默认值。它们本质上是属性。接口中的默认方法体允许接口在发布后发展,并提供行为(特征)的多重继承形式。
标签: java interface annotations java-8