我有我的第一個列表,增加一個類型的列表爲另一種類型的列表
List<A> a
我還有一個列表,
List<X.Y.Z> b
如何添加第一個列表的第二個?
我試圖鑄造 -
b.add(List<X.Y.Z>)a) - did not work
嘗試添加通過第一個列表的迭代 - 沒有工作
肯定錯過了什麼?
我有我的第一個列表,增加一個類型的列表爲另一種類型的列表
List<A> a
我還有一個列表,
List<X.Y.Z> b
如何添加第一個列表的第二個?
我試圖鑄造 -
b.add(List<X.Y.Z>)a) - did not work
嘗試添加通過第一個列表的迭代 - 沒有工作
肯定錯過了什麼?
這是不可能的,因爲兩個集合的引用類型都不相同。一個List
的項目可以與另一個項目合併的唯一方法是如果它們都是List<Object>
類型或類型本身是相同的(或至少源自相同類型)。
的原因是因爲type
的List<>
X.Y.Z != A
您可以使用List<Object>
,您可以向其中add()
anything.Even雖然你加入這樣的
,你將不得不每投一回,同時回來。
您需要將列表a轉換爲與列表b相同的類型,以便它們是相同類型的對象。退房this article
還應當指出的是,如果你想的List<A> a
的元素添加到List<X.Y.Z> b
(我以爲是你的意圖),而不是List<A> a
本身作爲一個元素,你應該使用addAll()
方法,不方法add()
。但是,除非A
是X.Y.Z
的一個子類,並且如果A
是X.Y.Z
的超類,那麼只有在X.Y.Z
的實例下才會投射A
變量,否則這將不起作用。
您可以使用List<Object>
,您可以在其中添加任何內容,也可以編寫某種方法將A
類型的對象轉換爲X.Y.Z
。
請注意,如果你使用List<Object>
,你需要將對象轉換爲所需類當你得到它:
List<Object> myList = new List<Object>;
// ...
A myObject = (A) myList.get(0);
X.Y.Z otherObject = (X.Y.Z) myList.get(1);
// ...
考慮以下情況
List<Integer> l1=new ArrayList<>();
List<String> l2=new ArrayList<>();
l1.add(2);
l2.addAll((List<String>)l1);
你想做同樣的事情。在這裏你不能把整數列表轉換爲字符串列表。
您無法將類型列表投射到X.Y.Z.類型。
b期待的是某種類型的XYZ,並且您試圖將它傳遞給一個類型爲List的對象 – DFord
http://stackoverflow.com/questions/11273440/adding-one-list-to-another-list-in-java –
@Naveen那些不是同一類型。所以,添加所有不會在這裏工作我猜:) –