我想编写一个函数来获取一个对象并将其转换为包含该对象作为单个元素的数组。在我看来,我可以使用泛型和变量参数来自动执行此操作,而无需为我希望使用的每个对象类型编写函数。这段代码会起作用吗?我需要注意哪些细微之处?
public static <X> X[] convert_to_array(X... in_objs){
return in_objs;
}
答案 0 :(得分:11)
为什么不简单:
Object o = new Object();
Object[] array = { o }; // no method call required!
你真正想要完成什么?
答案 1 :(得分:6)
它有效,但看起来像是:
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.
}
可以使用Varargs,但前提是数组是最后一个参数。
答案 2 :(得分:0)
假设你需要一个你需要一个正确输入的数组,你可以使用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
}