Java 确保类型参数正确
我创建了一个名为Java 确保类型参数正确,java,jakarta-ee,generics,Java,Jakarta Ee,Generics,我创建了一个名为Box的类,它有一个类型参数。声明如下: 公共类框{…} 我还创建了一个包含这些框的表,该表中有许多不同操作的getter(getselected等)。声明如下: 公共类BoxContainer{…}。如果我写newboxcontainer()get selected方法返回Animal。这是显而易见的。但是是否可以确保BoxContainer只接受类型为Box的类型参数?我试图编写公共类BoxContainer{…},但由于某些原因,这是不允许的。这可能吗?还是更好的方法?使用
Box
的类,它有一个类型参数。声明如下:
公共类框{…}
我还创建了一个包含这些框的表,该表中有许多不同操作的getter(getselected等)。声明如下:
公共类BoxContainer{…}
。如果我写newboxcontainer()
get selected方法返回Animal
。这是显而易见的。但是是否可以确保BoxContainer只接受类型为Box
的类型参数?我试图编写公共类BoxContainer{…}
,但由于某些原因,这是不允许的。这可能吗?还是更好的方法?使用第二个键入的参数
public class BoxContainer<T, Y extends Box<T>> {...}
公共类BoxContainer{…}
或者只使用容器内的盒子:
public class BoxContainer<T> {
List<Box<T>> innerList;
}
公共类BoxContainer{
列表内部列表;
}
是类型的泛型。它只是指定可以使用任何类型的对象,但不能使用基本体。这就是为什么当您使用Animal时,它返回Animal
BoxContainer
是正确的泛型类型。如果您只想为BoxContainer
类接受Box
对象,您可以简单地限制方法/构造函数的签名:
public class BoxContainer<T> {
private final Box<T> box;
public BoxContainer(Box<T> box) {
this.box = box;
}
public Box<T> getBox() {
return box;
}
public T getObjectFromBox() {
return box.getObject(); // assumes getObject returns object of type T
}
}
公共类BoxContainer{
私人总装箱;
公共箱式集装箱(箱){
this.box=box;
}
公共框getBox(){
返回框;
}
公共T getObjectFromBox(){
return box.getObject();//假定getObject返回类型为T的对象
}
}
我真的不知道Box
和BoxContainer
之间的关系,你能提供完整的代码片段吗?BoxContainer的t
类型必须与Box
的t
类型相同吗?对不起,我写这篇文章时对这个问题感到困惑。我道歉。