Java8で開発しています。
総称型で指定したクラスのArrayListを渡せば、
すべてのオブジェクトをclone()でコピーするという、
配列中すべてのオブジェクトをディープコピーできるものを作ろうと思ったのですが、
Objectではclone()がprotectedとなっており、
総称型のオブジェクトで呼び出すことができません。
理想としては、
new ArrayClone<MyClass>.getDeepClone(myList);
といった形で、
ディープコピーされた配列を取得できるというものです。
クラスの継承に制限をつけるなら、
<E extends ExampleClass>
でできるのですが、
インターフェースを制限し、
総称型のオブジェクトを、実装されている状態(この場合Cloneable)で参照することはできないのでしょうか…
java
1 2public class ArrayClone<E>{ 3 4 public ArrayList<E> getDeepClone(ArrayList<E> list) { 5 ArrayList<E> result = new ArrayList<E>(list.size()); 6 for (E e : list) { 7 result.add(e.clone());//ここで clone() が型 Object で不可視なためにコンパイルエラー 8 } 9 10 return result; 11 } 12}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/29 13:01
2016/02/29 13:19