gpt4 book ai didi

java - 将原始数组转换为装箱数组时如何减少强制转换次数

转载 作者:行者123 更新时间:2023-12-01 19:50:02 24 4
gpt4 key购买 nike

我想将原始类型数组转换为其各自的装箱数组,例如,如果我有一个 int[] 类型的数组,我想将其转换为 Integer[] ,同样适用于 long[]、byte[]、boolean[] 等...我想出了这个:

public static Integer[] toBoxedArray(int[] array) {
Integer[] boxedArray = null;
if (array != null) {
boxedArray = new Integer[array.length];
for (int i = 0; i < array.length; i++) {
boxedArray[i] = array[i];
}
}
return boxedArray;
}

对于所有基本类型重复上述方法(多态性)。

使用这些方法需要许多条件 block :

public static List castArrayToList(Object array) {
List list = null;
if (array instanceof int[]) {
list = Arrays.asList(toBoxedArray((int[]) array));
} else if (array instanceof long[]) {
list = Arrays.asList(toBoxedArray((long[]) array));
} else if (array instanceof byte[]) {
list = Arrays.asList(toBoxedArray((byte[]) array));
} else if (array instanceof boolean[]) {
list = Arrays.asList(toBoxedArray((boolean[]) array));
} else if (array instanceof float[]) {
list = Arrays.asList(toBoxedArray((float[]) array));
} else if (array instanceof short[]) {
list = Arrays.asList(toBoxedArray((short[]) array));
} else if (array instanceof double[]) {
list = Arrays.asList(toBoxedArray((double[]) array));
} else if (array instanceof char[]) {
list = Arrays.asList(toBoxedArray((char[]) array));
} else if (array instanceof Collection) {
list = new ArrayList((Collection) array);
}
return list;
}

我的问题是:有没有办法减少 castArrayToList 方法中 if 的数量?

编辑

castArrayToList 方法采用 Object 作为参数,因为输入来自反射调用。

最佳答案

My question is this: is there a way to reduce the number of if's in the castArrayToList method ?

是:使用 castArrayToList 的重载,就像使用 toBoxedArray 一样,以便编译器为您分派(dispatch)正确的方法:

public static List castArrayToList(int[] array) {
return Arrays.asList(toBoxedArray(array));
}
public static List castArrayToList(long[] array) {
return Arrays.asList(toBoxedArray(array));
}
public static List castArrayToList(byte[] array) {
return Arrays.asList(toBoxedArray(array));
}
public static List castArrayToList(boolean[] array) {
return Arrays.asList(toBoxedArray(array));
}
// ...and so on...

关于java - 将原始数组转换为装箱数组时如何减少强制转换次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51671094/

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