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

时间:2013-06-06 01:17:20

标签: java oop generics

我有一个Cage类:

public class Cage<T extends Animal> {
// the construtor takes in an integer as an explicit parameter
...
}

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

private Cage cage5 = new Cage(5);

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

2 个答案:

答案 0 :(得分:18)

Cage<T>是泛型类型,因此您需要指定一个类型参数,如此(假设有一个class Dog extends Animal):

private Cage<Dog> cage5 = new Cage<Dog>(5);

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

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

答案 1 :(得分:0)

对于其他像我这样的Java新手。

  • 代码如下:
public class ContinuousAddressBuilder<T> extends VariableLengthPacket {
  ...

  /* T=int/float/double */
  private ArrayList<T> informosomes;

  ...

  public ContinuousAddressBuilder builderCon(int con) {
    ...
  }
}
  • 解决方案:

在课程之后添加<T>

更改自

public ContinuousAddressBuilder builderCon(int con)

public ContinuousAddressBuilder<T> builderCon(int con)