我想寫一個函數,將一個對象並將其轉換爲包含該對象的數組作爲單個元素。我想,我可能可以用泛型和變量參數來做到這一點,基本上這樣做,而不需要爲我希望使用的每種對象類型編寫函數。此代碼是否可以工作?我需要注意哪些細節?將單個對象轉換爲數組的函數?
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