2009-01-29 21 views
2

我想写一个函数,将一个对象并将其转换为包含该对象的数组作为单个元素。我想,我可能可以用泛型和变量参数来做到这一点,基本上这样做,而不需要为我希望使用的每种对象类型编写函数。此代码是否可以工作?我需要注意哪些细节?将单个对象转换为数组的函数?

public static <X> X[] convert_to_array(X... in_objs){ 
    return in_objs; 
} 

回答

3

它的工作原理,但它似乎是:

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. 
} 

可变参数可以是我们但只有当数组是当然最后一个参数。

10

为什么不干脆:

Object o = new Object(); 
Object[] array = { o }; // no method call required! 

什么是你真正想要实现?

+0

嗨,你可以给我解释一下它是如何工作的? – uhs 2014-02-14 05:22:20

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 
    }