日期:2014-05-20  浏览次数:20615 次

集合ArrayList的add怎么编译不过?
我就创建了两个集合list,然后定义了泛型。为什么几个add都编译出错的???
public class B {
public static void main(String[] a) {
ArrayList<? extends String> aaa = new ArrayList<String>();
aaa.addAll("st");
aaa.add("aaa");
}

public void takelist(ArrayList<? extends Object> list) {
list.addAll("st");
list.add("add");
}
}



------解决方案--------------------
ArrayList<? extends String> aaa = new ArrayList<String>();
ArrayList<? extends Object> list

这样的代码有意义吗?
String是final类型的,不能被子类继承这是内置的设计。
后面? extends Object就更不用说了。
------解决方案--------------------
请问楼主,你想干嘛?印象中泛型好像不是这样用的吧
Java code

import java.util.ArrayList;

public class TestGeneric
{
    public static void main(String[] args)
    {
        ArrayList <String> list = new ArrayList<String>();
        list.add("st");
        list.add("aaa");
        System.out.println(list);
    }
}
/*
 * output:
 * [st, aaa]
 */

------解决方案--------------------
extends String有什么意思啊
------解决方案--------------------
代码改改就好了
------解决方案--------------------
泛型的通配符不是这个用途。
------解决方案--------------------
class B {
public static void main(String[] a) {
ArrayList<String> aaa = new ArrayList<String>();
aaa.add("st");
aaa.add("aaa");
}

public void takelist(ArrayList<String> list) {
list.add("st");
list.add("add");
}
}

------解决方案--------------------
泛型定义错了
------解决方案--------------------
字符串不能这么整
------解决方案--------------------
看不懂LZ的代码。
------解决方案--------------------
String 类是不可以被继承的,另外也不懂楼主想干什么
------解决方案--------------------
貌似Java中的泛型和C++中的有差距啊……

那个final类是不能被extends的,所以报错了。
------解决方案--------------------
通配符要哭了
------解决方案--------------------
范型用错了而已
------解决方案--------------------
aaa.addAll("st");方法不对,AddAll方法传递的参数应该是一个集合,是指将一个集合中的所有元素加到本集合中
------解决方案--------------------
final String{} can't be extended!!!