java泛型通配符编译错误(泛型泛型)

时间:2013-05-24 22:17:48

标签: java generics

您好我有一个代码安静的编译问题。如何对数据变量执行安全添加?

import java.util.*;

public class Foo
{
    private TreeSet<? extends Collection<String>> data;

    public Foo()
    {
        data = new TreeSet<ArrayList<String>>();  
        data.add("Goofy"); //this action generates a compile error
    }
}

2 个答案:

答案 0 :(得分:10)

您正在尝试将String添加到TreeSet ArrayListsString中。您需要添加ArrayList。大概

ArrayList<String> list = new ArrayList<>();
list.add("Goofy");
data.add(list);

也就是说,假设你没有使用过于复杂的设计,你很可能就是这样。

答案 1 :(得分:1)

data是ArrayList的集合,您正在尝试添加String

您需要先将String添加到数组列表

ArrayList<String> list = new ArrayList<String>();
list.add("Goofy");
data.add(list);

或将数据更改为字符串TreeSet

private TreeSet<String> data;
data = new TreeSet<String>(); 
data.add("Goofy");