3 回答

TA貢獻1783條經(jīng)驗 獲得超4個贊
除了可能在將來的版本中向接口添加方法之外,還有一點很重要的一點是interface
,即使一個或多個方法都可以保留功能接口。
功能接口只有一個非默認的抽象方法,該方法可以通過lambda表達式實現(xiàn)。一個示例是接口,該Predicate
接口僅具有一個抽象方法(test
),同時提供用于Predicate
將a取反或與另一個組合的默認方法Predicate
。如果沒有默認方法,則必須在另一個實用程序類Collections
(如Java 8之前的類)中提供這些方法(因為您不希望放棄針對此類的lambda實現(xiàn)的可能性interface
)。

TA貢獻1811條經(jīng)驗 獲得超5個贊
如您所說,其主要動機是允許現(xiàn)有接口的發(fā)展。
但是,出于某些原因,您也希望在全新的界面中使用它們:
其中一個原因是可以使用接口的其他(非默認)方法輕松實現(xiàn)的方法。default
為此使用方法可以減少對Foo
-interface / AbstractFoo
-base-implementation組合的需求(AbstractList
例如,請參見)。
盡管這不會創(chuàng)建一個全新的字段,但它意味著您可以擁有對最終用戶友好的界面(具有許多有用的方法),同時仍然使其易于實現(xiàn)。
添加回答
舉報