據我所知,你不能在界面體中聲明靜態方法。但是,無意中我在http://docs.oracle.com/網站上發現了一段特殊的代碼。這裏是linkjava界面中的靜態方法
Namelly
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
我輸了...任何人都可以解釋請
您_can_聲明在接口的靜態方法開始與Java 8還請注意'getZoneDateTime(不與Java 8的
Function
它基本上是從番石榴偷走了,與Predicate
沿和其他一些混合) ()'方法(虛擬擴展方法,在Java 8中也是新的)。 – fge請參閱http://marioosh.5dots.pl/2014/02/12/java-8-default-and-static-methods-in-interfaces.html – Sap
您沒有看到Java 8的新功能列表嗎?覈實。 –