这是IntArrayBag我说的是。为了解决这个问题,这里是数据字段和构造函数:
private int[ ] data;
private int manyItems;
public IntArrayBag( )
{
final int INITIAL_CAPACITY = 10;
manyItems = 0;
data = new int[INITIAL_CAPACITY];
}
我的问题是,如何使此类通用,以便该方法将任何类型的对象作为参数(而不是整数)?我正在考虑使数组通用,但根据 this答案数组不能是通用的且 this回答指出您不能拥有通用数据字段。
那么如何使这个类变得通用呢?谢谢!
最佳答案
您可以使用 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
.
您还可以“搭载”ArrayList<T>
自动增长的能力,这将使您可以从类中删除数组增长逻辑。
关于java - 如何使 IntArrayBag 通用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49614015/