我有一节笼子课:
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(
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)
<T>
public ContinuousAddressBuilder builderCon(int con)
public ContinuousAddressBuilder<T> builderCon(int con)
q7solyqu2#
Cage<T> 是泛型类型,因此需要指定一个类型参数,如下所示(假设存在 class Dog extends Animal ):
Cage<T>
class Dog extends Animal
private Cage<Dog> cage5 = new Cage<Dog>(5);
可以使用任何扩展的类型 Animal (甚至 Animal 本身)。如果省略了type参数,那么在这种情况下得到的结果基本上是 Cage<Animal> . 但是,您仍然应该显式地声明类型参数,即使这是您想要的。
Animal
Cage<Animal>
2条答案
按热度按时间wf82jlnq1#
对于像我这样的java新手。
代码如下所示:
解决方案:
添加
<T>
下课后:更改自
public ContinuousAddressBuilder builderCon(int con)
到public ContinuousAddressBuilder<T> builderCon(int con)
q7solyqu2#
Cage<T>
是泛型类型,因此需要指定一个类型参数,如下所示(假设存在class Dog extends Animal
):可以使用任何扩展的类型
Animal
(甚至Animal
本身)。如果省略了type参数,那么在这种情况下得到的结果基本上是
Cage<Animal>
. 但是,您仍然应该显式地声明类型参数,即使这是您想要的。