[英]Casting ArrayList<SuperClass> to ArrayList<SubClass>
我知道這聽起來很愚蠢,但我確實需要它。 我100%肯定只允許SubClass進入arraylist。 Superlalass中沒有其他子類屬於該arraylist。
我怎樣才能做到這一點?
Map<String, List<Nodo>> map = ((Cast to ArrayList<NodoMoore> here)nodos).stream().
collect(Collectors.groupingBy(Nodo::getSalida));
我的類實現了一個讓我使用Nodo而不是NodoMoore的接口,但是getSalida方法不是Nodo方法,只是NodoMoore方法。
如果您確定nodos
僅包含nodos
實例, NodoMoore
可以使用NodoMoore
將Nodo
實例映射到NodoMoore
實例:
Map<String, List<NodoMoore>> map =
nodos.stream()
.map(n->(NodoMoore)n)
.collect(Collectors.groupingBy(NodoMoore::getSalida));
我認為NodoMoore
是Nodo
一個子類。
而不是使用方法句柄( Nodo::getSalida
),您可以使用lambda並在那里執行轉換:
Map<String, List<Nodo>> map = nodos.stream()
.collect(Collectors.groupingBy(x->((NodoMoore)x).getSalida());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.