簡體   English   中英

是否存在用於將超類映射到子類的特定聚合操作?

[英]Is there a specific aggregate operation to map superclasses to subclasses?

是否存在用於將超類映射到子類的特定聚合操作?

我經常發現自己正在執行以下操作:

list
.stream()
.map((A element) -> (SubClassA) element);

是否存在與上述map函數等效的操作,即采用值Stream並將其強制轉換為子類?

我最容易想到的是:

Stream<X> stream1 = ...
Stream<SubClassA> stream2 = stream1.map(SubClassA.class::cast);

使用通用的wirldcard。

List<A> list = new ArrayList<>();

Stream<A> streamA1 = list.stream();
Stream<B> streamB1 = (Stream<B>)streamA1;   // ERROR! Cannot cast from Stream<A> to Stream<B>

Stream<? extends A> streamA2 = list.stream();
Stream<B> streamB2 = (Stream<B>)streamA2;   // OK

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM