JDK8介面新特性

2021-08-22 14:49:32 字數 1098 閱讀 7680

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...