[英]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.