在Java中从泛型类中的嵌套泛型分配变量?

在Java中从泛型类中的嵌套泛型分配变量?,java,generics,nested-generics,Java,Generics,Nested Generics,如果我有以下代码: public class DummyClass<T> { public List<T> getList() { return new ArrayList<T>(); } public Set<List<T>> getListSet() { return new HashSet<List<T>>(); } } 公共类DummyCl

如果我有以下代码:

public class DummyClass<T> {
    public List<T> getList() {
        return new ArrayList<T>();
    }
    public Set<List<T>> getListSet() {
        return new HashSet<List<T>>();
    }
}
公共类DummyClass{
公共列表getList(){
返回新的ArrayList();
}
公共集getListSet(){
返回新的HashSet();
}
}
我有一个
DummyClass假人

我能行

List<?> list = dummy.getList();
List List=dummy.getList();
没有任何错误

但是,

Set<List<?>> listSet = dummy.getListSet();

Set>首先设置很重要的一点是要知道,编译器会替换吗?具有对象类的运算符。所以当你写这篇文章时:

DummyClass<?> dummy
DummyClass虚拟
您的类定义如下所示:

public class DummyClass<Object>
public List<Object> getList() {
    return new ArrayList<Object>();
}
public Set<List<Object>> getListSet() {
    return new HashSet<List<Object>>();
}
公共类DummyClass
还有像这样的方法:

public class DummyClass<Object>
public List<Object> getList() {
    return new ArrayList<Object>();
}
public Set<List<Object>> getListSet() {
    return new HashSet<List<Object>>();
}
public List getList(){
返回新的ArrayList();
}
公共集getListSet(){
返回新的HashSet();
}
你可以写

List<?> list = new List<Object>();
List List=新列表();
但不是

Set<List<?>> set = new HashSet<List<Object>>();

设置但是您可以执行以下操作:

Set>listSet=listSet=dummyClass.getListSet()


看到这篇优秀的文章。

我想你的问题已经在这里得到了回答: