我想写一个函数,将一个对象并将其转换为包含该对象的数组作为单个元素。我想,我可能可以用泛型和变量参数来做到这一点,基本上这样做,而不需要为我希望使用的每种对象类型编写函数。此代码是否可以工作?我需要注意哪些细节?将单个对象转换为数组的函数?
public static <X> X[] convert_to_array(X... in_objs){
return in_objs;
}
我想写一个函数,将一个对象并将其转换为包含该对象的数组作为单个元素。我想,我可能可以用泛型和变量参数来做到这一点,基本上这样做,而不需要为我希望使用的每种对象类型编写函数。此代码是否可以工作?我需要注意哪些细节?将单个对象转换为数组的函数?
public static <X> X[] convert_to_array(X... in_objs){
return in_objs;
}
它的工作原理,但它似乎是:
Object o = new Object();
someMethod(new Object[] { o });
是一个小更直接的则:
Object o = new Object();
someMethod(convert_to_array(o));
在有时我想传递一个对象的情况下,但有时我想传递一个数组,通常我只是在API中使用重载方法:
public void doSomething(Object o)
{
doSomething(new Object[] { o });
}
public void doSomething(Object[] array)
{
// stuff goes here.
}
可变参数可以是我们但只有当数组是当然最后一个参数。
为什么不干脆:
Object o = new Object();
Object[] array = { o }; // no method call required!
什么是你真正想要实现?
假设你需要,你需要的是正确类型的数组,你可以使用java.lang.reflect.Array中:
static public Object[] createTypedArray(Object elm) {
Object[] arr=(Object[])java.lang.reflect.Array.newInstance(elm.getClass(),1);
arr[0]=elm;
return arr; // this can be cast safely to an array of the type of elm
}
嗨,你可以给我解释一下它是如何工作的? – uhs 2014-02-14 05:22:20