Java:将指定类型分配给泛型类型

Ste*_*ess 3 java generics types

我试图理解以下代码。

class Test<E extends SubTest>
{
    List<Vector<E>> links;

    Test()
    {
        links = MyStaticClass.aList;
        // Where aList is static ArrayList<Vector<SubTest>>;
    }
}
Run Code Online (Sandbox Code Playgroud)

如何将以下内容分配ArrayList给链接列表会出现错误。考虑到我用SubTest扩展了E,它不理解作业吗?

当我有一个参数T t时;我可以访问t属性,但不能执行上述操作。难道不List<Vector<T>>链接指望得到ArrayList<Vector<SubTest>>呢?

SLa*_*aks 5

您误解了错误。

实际的问题是ESubTest

如果您创建的实例Test<SubSubTest>(where SubSubTest继承SubTest),则您的代码将尝试将SubTests 的集合(可以容纳任何派生类)放入类型变量List<Vector<SubSubTest>>(只能容纳SubSubTest)。