我是否正确理解<T>
只是指可以在ShoppingBasket类中使用的常规数据类型?
public class ShoppingBasket<T> implements allBags<T>
如果我想定义一个shoppingBasket类,该类实现一个称为allBags的通用接口,并且在该shoppingBasket中,我希望有一个可以通过int ID识别的水果数组(我用一个包含它的int数据字段创建了Fruit类。具有相关方法的ID)如何在不使用泛型的情况下做到这一点?
我愿意吗
public class ShoppingBasket implements allBags{
private Fruit[] fruitBasket;
,等等,构造函数/ getters / setters?我并不是要使用arrayList来处理容量有限的数组,因为我们还没有真正了解Java中的动态数组。这两种方法将如何影响我编写的代码,尤其是对我的构造函数而言?
答案 0 :(得分:3)
是的,<T>
是类型参数,ShoppingBasket<T>
声明了泛型类型。如果您不希望ShoppingBasket
通用,则可以这样声明:
public class ShoppingBasket implements allBags<Fruit> {
...
}
将与任何非泛型类一样声明和实现构造函数和访问器。无论接口在何处使用allBags
,都必须使用Fruit
定义在T
接口中声明的所有方法。因此,例如,如果allBags
的声明如下:
public interface allBags<T> {
...
void addItem(T item);
}
您将必须实现ShoppingBasket
类以拥有方法
@Override
public void addItem(Fruit item) { ... }
(您可以选择将参数从item
重命名为其他名称,但其余签名必须如图所示。)