13

我有一个笼子课程:

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

我正在尝试在另一个类主方法中实例化 Cage 的对象:

private Cage cage5 = new Cage(5);

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

4

2 回答 2

23

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

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

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

如果您省略类型参数,那么在这种情况下您最终得到的基本上是Cage<Animal>. 但是,即使这是您想要的,您仍然应该明确声明类型参数。

于 2013-06-06T01:20:13.380 回答
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)

于 2020-01-11T09:01:52.990 回答