原始类型.应参数化对泛型类型的引用

8 java oop generics

我有一个Cage类:

public class Cage<T extends Animal> {
// the construtor takes in an integer as an explicit parameter
...
}
Run Code Online (Sandbox Code Playgroud)

我试图在另一个类main方法中实例化Cage的对象:

private Cage cage5 = new Cage(5);
Run Code Online (Sandbox Code Playgroud)

我得到错误:Cage是原始类型.应参数化对泛型类型Cage的引用.我尝试了几个想法,但我对这种棘手的语法感到困惑:o(

cdh*_*wie 18

Cage<T>是一个泛型类型,所以你需要指定一个类型参数,就像这样(假设有一个class Dog extends Animal):

private Cage<Dog> cage5 = new Cage<Dog>(5);
Run Code Online (Sandbox Code Playgroud)

您可以使用任何扩展Animal(甚至Animal自身)的类型.

如果省略类型参数,那么在这种情况下最终结果就是Cage<Animal>.但是,即使这是您想要的,您仍应显式声明类型参数.