我得到了这个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];
}
答案 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);