【发布时间】:2014-06-02 15:06:50
【问题描述】:
据我所知,您不能在接口主体中声明静态方法。然而,我偶然在http://docs.oracle.com/ 网站上发现了一段奇特的代码。这是link
即
public interface TimeClient
{
void setTime(int hour, int minute, int second);
void setDate(int day, int month, int year);
void setDateAndTime(int day, int month, int year,
int hour, int minute, int second);
LocalDateTime getLocalDateTime();
static ZoneId getZoneId (String zoneString) {
try {
return ZoneId.of(zoneString);
} catch (DateTimeException e) {
System.err.println("Invalid time zone: " + zoneString +
"; using default time zone instead.");
return ZoneId.systemDefault();
}
}
default ZonedDateTime getZonedDateTime(String zoneString) {
return ZonedDateTime.of(getLocalDateTime(), getZoneId(zoneString));
}
}
这个interface 有一个static 方法getZoneId
我迷路了……谁能解释一下
【问题讨论】:
-
您可以在从 Java 8 开始的接口中声明静态方法。还要注意
getZoneDateTime()方法(虚拟扩展方法,也是 Java 8 中的新方法)。 -
你没有看到 Java 8 的新特性列表吗?检查一下。
标签: java interface static-methods