接口中的默认方法和静态方法
在我們最初的Java 8支持公告中,我們特別提到了缺少流,但是完全錯過了默認/靜態本機接口不起作用的事實。 現在,由于有一個警惕的社區成員指出了這一問題,因此此問題已得到解決。
由于限制需要全新構建才能使它們正常工作,因此對于Retrolambda ,這些功能似乎默認情況下處于關閉狀態。 這對Codename One構建服務器體系結構沒有限制,因此這些功能對于Codename One應用程序應該可以正常工作。
什么是默認接口方法?
默認接口方法允許您將新方法添加到接口并提供默認實現。 這有效地使我們能夠向前推進API,而不會破壞與實現此接口的人員的兼容性。 例如:
public interface DefaultInterfaceTest {String method();default String methodWithArg(String arg) {return method();} }對于大多數開發人員而言,這并不重要,因為我們通常只需添加新方法并解決問題即可。 但是,將來在將Codename One的實現轉移到Java 8語法時,這將是一個巨大的進步,因為它將允許我們向較舊的接口(例如PushCallback)添加方法。
什么是靜態接口方法
靜態接口方法通常只是靜態方法。 在很多情況下,我們只是將靜態方法隱藏在句柄中,但有時這沒有意義。 例如, Push類完全由靜態方法組成,作為獨立類沒有多大意義。 我們可以將類中的所有方法作為靜態方法滾動到接口中,并完全消除該類。
這不一定是“好的做法”,但是對于某些用例而言,這可能是持有該方法的更好位置。
例如:
public interface StaticInterfaceTest {String method();static String getNotNull(StaticInterfaceTest it, String def) {String s = it.method();if(s == null) return def;return s;} }您可以在Java教程中閱讀有關默認和靜態接口方法的信息。
切換到完整Java 8嗎?
如上所述,將Codename One本身的代碼庫轉換為Java 8將會獲得很多價值。目前,我們仍支持構建Java 5應用程序,并且在3.4推出之前可能不會改變它,因為我們當前的目標是更加穩定。比什么都重要。 但是,一旦3.4推出,我們可能會隱式地使所有構建都使用Java 8功能并切換內部代碼庫以使用它。
即使您使用的是舊的Java 5項目,在進行這種轉換后,構建仍然可以正常工作,并且不會被迫進行切換,但是,這將使我們能夠使用諸如默認方法之類的功能來實現所需的某些功能。 通過允許我們在核心實現中使用lambda,這也將使生活變得更輕松。
翻譯自: https://www.javacodegeeks.com/2016/04/default-static-methods-interfaces.html
總結
以上是生活随笔為你收集整理的接口中的默认方法和静态方法的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Microsoft Office 201
- 下一篇: 勾子基本概念
