我知道这听起来很愚蠢,但我确实需要它。 我100%肯定只允许SubClass进入arraylist。在该arraylist中没有SuperClass的其他子类。
我该怎么做?
Map<String, List<Nodo>> map = ((Cast to ArrayList<NodoMoore> here)nodos).stream().
collect(Collectors.groupingBy(Nodo::getSalida));
我的类实现了一个让我使用Nodo而不是NodoMoore的接口,但是getSalida方法不是Nodo方法,只是NodoMoore方法。
答案 0 :(得分:8)
如果您确定nodos
仅包含NodoMoore
的实例,
您可以使用强制转换器将Nodo
实例映射到NodoMoore
个实例:
Map<String, List<NodoMoore>> map =
nodos.stream()
.map(n->(NodoMoore)n)
.collect(Collectors.groupingBy(NodoMoore::getSalida));
我认为NodoMoore
是Nodo
的子类。
答案 1 :(得分:6)
不是使用方法句柄(Nodo::getSalida
),而是可以使用lambda并在那里进行转换:
Map<String, List<Nodo>> map = nodos.stream()
.collect(Collectors.groupingBy(x->((NodoMoore)x).getSalida());