这是我正在谈论的IntArrayBag。为了问题,这里是数据字段和构造函数:
private int[ ] data;
private int manyItems;
public IntArrayBag( )
{
final int INITIAL_CAPACITY = 10;
manyItems = 0;
data = new int[INITIAL_CAPACITY];
}
我的问题是,我怎样才能使这个类具有通用性,以便这个方法可以将任何类型的对象作为参数(而不是整数)?我正在考虑使数组通用,但根据this,答案数组不能是通用的,this回答说你不能拥有通用数据字段。
如何让这个类变得通用呢?谢谢!
答案 0 :(得分:3)
您可以使用List<T>
:
public class ArrayBag<T> {
private List<T> data;
private int manyItems;
public IntArrayBag() {
final int INITIAL_CAPACITY = 10;
manyItems = 0;
data = new ArrayList<T>();
}
}
这将处理非原始类型。原语需要装箱,使得该类不适合与int
s,long
等一起使用。
请注意,在以下情况下,您需要使用equals
代替==
:
if (target == data[index]) ...
以上内容应改写为
if (target.equals(data[index])) ...
检查target
null
后。
你也可以&#34;背驮式&#34; ArrayList<T>
自动增长的能力,可让您从班级中删除阵列增长逻辑。