Java:重载特定类型的数组方法

时间:2014-03-01 19:55:02

标签: java overloading

我得到了这个ArrayTools类,它在整数数组上执行了许多数组操作。

public class ArrayTools {
private int arr[];
    /* other variables */

public ArrayTools(int max) {
    arr = new int[max];
             /* other stuff */
}

目前该类的所有方法都使用该整数数组。

现在我需要为float数组实现完全相同的方法。我显然不想将整个代码整合到一个新的ArrayToolsFloat类中,改变了' int'进入'浮动'这是他们之间唯一的区别。 我想"对"方法是重载方法,因此我写了一个新的构造函数:

private int integerArray[];
private float floatArray[];    

 /* constructor which creates the type of array based on the input of the second parameter */
public ArrayTools(int max, String arrayType) {
    if (arrayType.equals("float")) { 
        floatArray = new float[max];
    } else if (arrayType.equals("int")){
        integerArray = new int[max];
    }

现在的问题是我无法找到如何以通用方式使用数组。我的方法仍然不知道创建了哪个数组,并且我不想用一个指定它的参数来调用它们。似乎没有意义。 构造函数不允许我在里面声明私有变量。否则我会这样做:

if (arrayType.equals("float")) { 
        private float genericArray = new float[max];
    } else if (arrayType.equals("int")){
        private int genericArray = new int[max];
    } 

1 个答案:

答案 0 :(得分:2)

使用Float和Integer对象并使用泛型实现它。

    public class ArrayTools<T>{
       private List<T> arr;
       public ArrayTools(int max) {
          arr = new ArrayList<T>(max);
             /* other stuff */
       }
    }

使用那个类你就可以这样做了

ArrayTools<Float> floatArrayTools = new ArrayTools<Float>(max);
ArrayTools<Integer> floatArrayTools = new ArrayTools<Integer>(max);