(標題聽起來有點太花哨,但我無法找到匹配的,所以我們希望它是描述性的。)Java的繼承陣列的建設和協變返回
我的代碼工作片如下:
@SuppressWarnings("unchecked")
public static Copyable[] copyOf(Copyable[] objects, Class type) {
Copyable[] copies = Arrays.copyOf(objects, objects.length, type);
for(int i=0; i < copies.length; ++i) {
if(objects[i] == null)
throw new IllegalArgumentException("Copyable[] contains null reference", new NullPointerException());
copies[i] = objects[i].copy();
}
return copies;
}
不像我想的那麼漂亮,因爲我必須傳入數組類,但它適用於我想要的操作:分配一個可複製實現器的新數組,並使用實現的方法填充它。
我遇到的問題是,這是由GWT編譯的,它的JRE Emulation庫barfs在正確的Java上沒有實現。我需要這樣做,而不調用Arrays.copyOf(),並希望沒有反射。
注:我正在研究一個clone()版本,但並不真的想依賴clone()。我覺得必須有一個更清潔的解決方案。
您是否必須避免使用泛型?如果沒有,你不能只是做'Arrays.copyOf'在你的方法中做什麼? –
@ arne.b謹慎地把它放在答案中? ;) – orbfish