Java泛型问题

Nee*_*eel 2 java generics

我遵循该类的定义.

public class Test2<T extends Test3> {

     private T t ;


     public T foo() {
         Test3 test3 = new Test3();
         t = test3;  // I get compilation error here.**
         return t;
     }

}

class Test3 {

}
Run Code Online (Sandbox Code Playgroud)

我在第t = test3行得到编译错误,说"类型不匹配无法从Test3转换为T;有什么问题?

Mar*_*iot 8

你正在做的是等同于:

Integer n = new Number();
Run Code Online (Sandbox Code Playgroud)

并且与泛型无关(请注意Integer extends Number).编译器指示您不能将父类型分配给子类型的实例,父类型可能不会实现所有子类型的所需方法.

在这种情况下T是子类型Test3或其Test3自身.所以在这里,您尝试将父类(T)分配给包含子类(Test3)的变量,并且它失败,就像上面的示例一样.