gpt4 book ai didi

java - 对多种数据类型使用相同的函数

转载 作者:行者123 更新时间:2023-12-01 17:56:32 25 4
gpt4 key购买 nike

是否可以对不同的数据类型重用相同的函数?例如,我有一个将 Integer ArrayList 转换为 Integer 数组的函数

public static int[] arrayListToIntArray(ArrayList<Integer> list) {
int[] out = new int[list.size()];
int count = 0;
for (int x : list) {
out[count] = x;
count++;
}
return out;
}

但是,如果我想使用字节 ArrayList 来做到这一点,我必须这样做

public static byte[] arrayListToByteArray(ArrayList<Byte> list) {
byte[] out = new byte[list.size()];
int count = 0;
for (byte x : list) {
out[count] = x;
count++;
}
return out;
}

所以我想知道是否有更好的方法,而不只是用不同的数据类型重复相同的代码,并且基本上拥有相同代码的整个类?或者我可以做一些事情以便它可以用于所有数据类型吗?

最佳答案

是的,你可以。它的名字叫Generics

public static <T> T[] arrayListToIntArray(ArrayList<T> list) {
T[] out = (T[]) new Object[list.size()];
int count = 0;
for (T x : list) {
out[count] = x;
count++;
}
return out;
}

更新:

您无法实例化通用类型,因此您还可以传递另一个将成为该类型的参数,请查看 this .

public static <T> T[] arrayListToIntArray(ArrayList<T> list, Class<T> t ) {
T[] out = (T[]) Array.newInstance(t, list.size());
int count = 0;
for (T x : list) {
out[count] = x;
count++;
}
return out;
}

关于java - 对多种数据类型使用相同的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44317235/

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