[英]I use Guava's immutable collections (compiled for Java 6) and a Java 8 JRE, can I use the new stream interface?
我使用Guava,特別是它們的不可變集合( ImmutableList
, ImmutableSet
)。
但是Guava是為Java 6編譯的。如果我使用Java 8,我可以使用.stream()
嗎?
是的你可以。
所述.stream()
方法,它是在所定義的Collection
的接口, 具有一個默認的實現 。 就此而言, .parallelStream()
和.spliterator()
。 List
和Set
都是“ Collection
”。
它並沒有結束,因為你也可以在Guava的ImmutableMap
上使用Map
的.forEach()
。 Map
確實有其他默認操作,但是它們會改變地圖,而Guava的不可變集合/地圖是...嗯......
需要注意的是更普遍, 每一個接口的方法有一個默認的實現時,它會在javadoc中提到的,由於方法的返回類型將與前面default
關鍵字 。
一些樣本,非常粗糙的代碼可以使用它(以及lambdas中使用的單一抽象方法的概念,請參閱此處了解更多詳細信息):
ImmutableSet.of(23, 2389, 19).stream().forEach(System.out::println);
( System.out
是一個PrintStream
,其.println()
方法簽名與Consumer
簽名相同)
由於這一事實, ImmutableList
實現了Collection
和Iterable
,它們是Java 8
提供的接口,具有您枚舉的方法的默認實現,您給出的答案並不令人驚訝,對吧?
也許這個問題應該重述為: ImmutableList
實現了Collection
和Iterable
? 因為如果是這樣, Java 8
提供的所有默認方法都是可用的。 特別是: .stream()
.parallelStream()
和.spliterator()
。
但接下來的答案只需要查看Guava提供的JavaDoc,這也不是什么大問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.