2016-05-30 94 views
-1

我不擅长泛型,但有人可以告诉我如何在下面的代码中添加List<String>List<Object>?或者,我错过了一些非常基本的东西。泛型:将`List <String>`添加到`List <Object>`

https://stackoverflow.com/a/20356096/5086633

的方法是不适用的,因为StringObjectList<String>不是List<Object>

 public static void main(String args[]) { 

       List<Object> testObj = new LinkedList<Object>(); 
       List<String> testString = new LinkedList<String>(); 
       testObj.add("TestObjValue1"); 
       testObj.add("TestObjValue2"); 
      testObj.add("TestObjValue3"); 
      testObj.add("TestObjValue4"); 
      testString.add("TestStrValue1"); 
      testString.add("TestStrValue2"); 
      testString.add("TestStrValue3"); 
      testString.add("TestStrValue4"); 

      System.out.println(testObj); 

    testObj.addAll(testString); 

    System.out.println(testObj); 

//testString.add(testObj); --> Compile time Error 

//testObj stores reference of type Object 
//testString stores reference of type String 
//so a String type List reference can store String type alone 
//However Object type List ref variable can store Object and its subclasses?? 

输出

[TestObjValue1, TestObjValue2, TestObjValue3, TestObjValue4, 
[TestStrValue1, TestStrValue2, TestStrValue3, TestStrValue4]] 


[TestObjValue1, TestObjValue2, TestObjValue3, TestObjValue4, 
[TestStrValue1, TestStrValue2, TestStrValue3, TestStrValue4], 
TestStrValue1, TestStrValue2, TestStrValue3, TestStrValue4] 

回答

1

您正在尝试一个实际的List添加到List可能只包含String S,成功添加的每个单独的项目,你将需要遍历testObj列表并单独添加它们

for (Object obj : testObj) { 
    testString.add(String.valueOf(obj)); 
} 
相关问题