0

次のシナリオで、アレイのクローンを作成する方法を考えています。

private List<TestObject> testList = Collections.synchronizedList(new ArrayList<TestObject>());

....

public synchronized List<TestObject> getAllTestObjects(){
    return testList.clone();
    //I have tried casting to List<TestObject>
}

clone() が List に対して未定義であることについてうめき声があります。しかし、それを回避する最善の方法がわかりませんか?

どんな助けでも大歓迎です。

4

2 に答える 2

2

によって提供されるコンストラクターを使用する必要があります。ArrayList

public synchronized List<TestObject> getAllTestObjects(){
    return new ArrayList<TestObject>(testList);        
}
于 2013-03-19T16:52:29.960 に答える
0

これはうまくいくはずです:

private static class TestObject {
}
private TestObject[] objects = new TestObject[10];
private List<TestObject> testList = 
  Collections.synchronizedList(new ArrayList<TestObject>(Arrays.asList(objects)));
于 2013-03-19T16:59:33.803 に答える