jdk8中,介面中可以定義靜態的非抽象的方法,直接使用介面名呼叫靜態方法,但是它的實現類的類名或者例項卻不可以呼叫介面中的靜態方法。也可以定義普通的非抽象的方法,普通的非抽象方法要在返回值前加上default,對於普通的非抽象方法必須使用子類的例項來呼叫。如果有多個介面定義了相同的預設方法,實現多個這些介面時必須重寫預設方法,
public inte***ce jdk8inte***ce1
//使用default之後就可以定義普通方法的方法體了
public default void defaultmethod()
}
實現類中可以不寫繼承類
public class jdk8inte***ceimpl implements jdk8inte***ce1
直接通過呼叫介面呼叫。
@test
public void test1()
如果有兩個介面中的靜態方法一模一樣,並且乙個實現類同時實現了這兩個介面,此時並不會產生錯誤,因為jdk8不允許使用介面的實現類呼叫介面中的靜態方法。
但是如果兩個介面中定義了一模一樣的預設方法,並且乙個實現類同時實現了這兩個介面,那麼必須重寫預設方法,否則編譯失敗。
public inte***ce jdk8inte***ce1
//使用default之後就可以定義普通方法的方法體了
public default void defaultmethod()
}public inte***ce jdk8inte***ce2
//使用default之後就可以定義普通方法的方法體了
public default void defaultmethod()
}
如果有乙個類同時實現了這兩個方法,那麼它必須重寫介面中的defaultmethod()方法,否則編譯不通過。
public class jdk8inte***ceimpl2 implements jdk8inte***ce1,jdk8inte***ce2
@test
public void test2()
JDK8新特性 函式式介面
只包含乙個抽象方法的介面,稱為函式式介面。我們可以在乙個介面上使用 functionalinte ce 註解,這樣做可以檢 查它是否是乙個函式式介面。lambda表示式就是乙個函式式介面的例項。所以以前用匿名實現類表示的現在都可以用lambda表示式來寫 根據給定的規則,過濾集合中的字串。此規則由p...
JDK8的新特性
這兩天開始看jdk8的新特性,先看了lembda表示式和stream,就乙個感覺,優雅。趕緊將這兩天的成果總結一下 lembda表示式是乙個簡潔 可傳遞的匿名函式,實現了把 塊賦值給乙個變數的功能 格式就是 parameters expression,需要注意的是 引數可以為空 引數為乙個值得時候,...
jdk8的新特性
lambda表示式 格式為 符號左邊為表示式需要的所有引數 符號右邊為表示式要執行的功能 將之前的匿名內部內作為引數傳遞直接可以使用lambda表示式完成 比如lists new arraylist new arraylist stirng public int compare string a,s...