gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:00:29 24 4
gpt4 key购买 nike

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

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

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

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

现在我需要为 float 组实现完全相同的方法。我显然不想将整个代码 c&p 到一个新的 ArrayToolsFloat 类中,将“int”更改为“float”,这是它们之间的唯一区别。我想“正确”的方法是重载方法,因此我编写了一个新的构造函数:

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];
}

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

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

最佳答案

使用 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);

关于Java:重载特定类型的数组方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22119541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com