最近看Java集合框架的時候,在Iterable中發現居然定義了兩個default方法,后來通過查閱資料這是在JDK1.8之后接口新增加的功能
(1)增加default方法。對已有的接口,如果想對接口增加一個新方法,那么需要對實現該接口的所有類進行修改,如果接口實的現類很多,就會帶來很大的工作量,而且還很容易破壞以前的代碼,帶來一些問題。如果把新的方法定義為default方法,就可以避免對其他實現類的修改。
但是,這樣也會有一個問題:如果接口A和接口B里有一個名字相同并且參數列表也相同的方法都被定義為了default方法,那么當類C實現接口A和接口B的時候就會在編譯時報錯。由于是編譯時報錯,這個完全可以接受,當類C成功實現了
接口A和接口B以后(沒有沖突),類C的實例就可以調用接口A和接口B里的default方法了。
(2)新增了static函數。static修飾的方法也是非抽象方法,有自己的方法體,在接口中定義一個靜態方法,該方法可以直接用< 接口名.方法名() >的形式來調用。相當于調用類的靜態方法一樣,給方法的調用帶來了方便。