ImmutableSet實現了Set接口。對ImmutableSet
無意義的功能現在稱爲Set
的「可選操作」。我假設這樣的情況。因此ImmutableSet
現在爲許多可選操作拋出了UnsupportedOperationException
。他們爲什麼決定讓接口具有「可選操作」
這似乎倒退給我。我被告知Interface是一個合約,以便您可以在不同的實現中使用強加功能。可選操作的方法似乎從根本上改變(矛盾?)接口意味着要做什麼。今天實現這個,我會將Set
接口分成兩個接口:一個接口用於不可變操作,另一個接口擴展這些mutators操作。 (非常快,關閉袖口解決方案)
我知道技術的變化。我不是說應該這樣或那樣的。我的問題是,這種變化是否反映了Java的某些基礎哲學的變化?它只是更多的東西,使事情向後兼容?我對接口有不完全的理解嗎?
*「接口是一個合約,因此您可以在不同的實現中使用強加功能」 - 這不就是集合接口最終成功完成的事情嗎?使用異常作爲功能的一部分可能不受歡迎,但它是一種語言功能,正確使用或實現集合時沒有任何可選的功能。你必須拋出/期待例外。儘管如此,我已經希望獲得更薄的接口或至少像'.supportsRemoval()'這樣的方法。 'ImmutableSet'擴展了'Set',它指定了現在保證拋出哪些方法。 – zapl 2014-10-30 19:46:56