【发布时间】:2017-06-02 06:02:14
【问题描述】:
是否可以为不同的数据类型重用相同的函数? 因此,例如,我有一个将 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;
}
所以我想知道是否有比仅使用不同数据类型重复相同代码并基本上拥有相同代码的整个类更好的方法?或者我可以做点什么让它可以用于所有数据类型?
【问题讨论】:
-
如果您想从包装器返回原始类型,则不是。如果您不介意返回
Byte[]或Integer[],那么您可以致电list.toArray(); -
您正在寻找泛型。见JAVA Generics
-
这只是我使用的一个示例,并非特定于该功能,但无论如何感谢。
-
是的,一般来说,出于性能和 Java-y 的原因,您不想对原始类型执行此操作。最好将 Java 拆分为基于原始/数组的东西和基于对象/泛型的东西。你可以使用 Number.class 来解决这个问题,但是有一些原始版本的东西,比如流和函数是有原因的。如果您来自 C#,这是一个显着的差异。