据我所知,您不能在接口主体中声明静态方法。 但是,我在http://docs.oracle.com/网站上意外发现了一个奇特的代码片段。 这里是链接
具体来说,
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
我有点迷惑,请问能否解释一下?
getZoneDateTime()
方法(虚拟扩展方法,在Java 8中也是新的)。 - fge