我有一个数组处理程序的实现,它接受一个数组并添加一个新的数组值。
目前我已经为长型工作了。
我想让它适用于任何类型,如果可能的话。
目前的实施:
public class ArrayHandler
{
public static long[] add(long[] arr, long value)
{
long[] newarr = new long[arr.length+1];
if(arr.length == 0)
{
newarr[0] = value;
}
else
{
for(int i = 0 ; i < arr.length ; i++)
{
newarr[i] = arr[i];
}
}
newarr[arr.length] = value;
return newarr;
}
}
答案 0 :(得分:0)
我希望这&#34;解决方法&#34;对你来说已经足够了:
public class Test {
public static void main(String[] args) {
Long theLong = new Long(1234);
Integer theInteger = new Integer(421);
Number[] myArray = null;
myArray = add(myArray, theLong);
myArray = add(myArray, theInteger);
System.out.println(myArray[0]);
System.out.println(myArray[1]);
}
public static Number[] add(Number[] arr, Number value) {
Number[] newarr = null;
if (arr == null || arr.length == 0) {
newarr = new Number[1];
newarr[0] = value;
} else {
for (int i = 0; i < arr.length; i++) {
newarr = new Number[arr.length + 1];
newarr[i] = arr[i];
}
newarr[arr.length] = value;
}
return newarr;
}
}
答案 1 :(得分:0)
你可以使用一个适用于所有类型数组的方法,但是你必须失去类型安全性(原始数组类型和参考数组类型的唯一超类型是Object
):
import java.lang.reflect.Array;
public class ArrayHandler
{
public static Object add(Object arr, Object value)
{
Object newarr = Array.newInstance(arr.getClass().getComponentType(),
Array.getLength(arr)+1);
System.arraycopy(arr, 0, newarr, 0, Array.getLength(arr));
Array.set(newarr, Array.getLength(arr), value);
return newarr;
}
}