java—原始类型泛型类型的引用应该参数化

of1yzvn4  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(341)

我有一节笼子课:

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是原始类型。泛型类型框架的引用应该参数化。我尝试了几个想法,但被困在这个棘手的语法:o(

wf82jlnq

wf82jlnq1#

对于像我这样的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)

q7solyqu

q7solyqu2#

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

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

可以使用任何扩展的类型 Animal (甚至 Animal 本身)。
如果省略了type参数,那么在这种情况下得到的结果基本上是 Cage<Animal> . 但是,您仍然应该显式地声明类型参数,即使这是您想要的。

相关问题