我知道接口就像一个 100% 的纯抽象类。所以,它不能有方法实现。但是,我看到了一个奇怪的代码。谁能解释一下?
代码片段:
interface Whoa {
public static void doStuff() {
System.out.println("This is not default implementation");
}
}
编辑:
我的 IDE 是 Intellij Idea 13.1。项目SDK为java 7 <1.7.0_25>。 IDE 没有显示任何编译器错误。但是,当我在命令行编译代码时,我收到以下消息。
Whoa.java:2: error: modifier static not allowed here public static void doStuff() { ^
原文由 user3034861 发布,翻译遵循 CC BY-SA 4.0 许可协议
从 Java 8 开始,除了默认方法之外,您还可以在接口中定义静态方法。
静态方法是与定义它的类相关联的方法,而不是与任何对象相关联的方法。该类的每个实例都共享其静态方法。
这使您更容易在库中组织辅助方法;您可以将特定于接口的静态方法保留在同一接口中,而不是在单独的类中。
以下示例定义了一个静态方法,该方法检索与时区标识符对应的
ZoneId
对象;如果没有ZoneId
对应于给定标识符的对象,它将使用系统默认时区。 (结果,您可以简化方法getZonedDateTime
)这是代码:
也可以看看
接口方法的 Oracle 文档
对于 Java 8 中所有有趣的事情,请阅读 Everything about Java 8