如何使IntArrayBag通用?

时间:2018-04-02 15:26:54

标签: java generics collections

这是我正在谈论的IntArrayBag。为了问题,这里是数据字段和构造函数:

   private int[ ] data;
   private int manyItems;

   public IntArrayBag( )
   {
      final int INITIAL_CAPACITY = 10;
      manyItems = 0;
      data = new int[INITIAL_CAPACITY];
   }

我的问题是,我怎样才能使这个类具有通用性,以便这个方法可以将任何类型的对象作为参数(而不是整数)?我正在考虑使数组通用,但根据this,答案数组不能是通用的,this回答说你不能拥有通用数据字段。

如何让这个类变得通用呢?谢谢!

1 个答案:

答案 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>自动增长的能力,可让您从班级中删除阵列增长逻辑。