簡體   English   中英

轉換ArrayList <SuperClass> 到ArrayList <SubClass>

[英]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可以使用NodoMooreNodo實例映射到NodoMoore實例:

Map<String, List<NodoMoore>> map = 
    nodos.stream()
         .map(n->(NodoMoore)n)
         .collect(Collectors.groupingBy(NodoMoore::getSalida));

我認為NodoMooreNodo一個子類。

而不是使用方法句柄( 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.

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