2016-08-24 9 views
-1

私はユニットテストインタフェースリストを作成しています。単純なコードだが、私は理解できない。理由はtestAdd()がUnsupportedOperationExceptionをスローするが、testSet()はこの例外をスローしない。インタフェースリストメソッドadd(int index、E element);なぜ私はUnsupportedOperationEceptionを持っていますか?

public class testList { 
    private static List<Integer> testList = new ArrayList<>(); 

    public static void main(String[] args) { 
     init(); 
     testGet(); 
     testSet(); 
     testAdd(); 
    } 

    private static void init() { 
     testList = Arrays.asList(0, 1, 2, 3, 1, 2, 5, 4); 
    } 

    private static void testGet() { 
     assertEquals(Integer.valueOf(2), testList.get(2)); 
    } 

    private static void testSet() { 
     testList.set(6, 5); 
     assertEquals(new Integer[]{0, 1, 2, 3, 1, 2, 5, 4}, testList.toArray()); 
    } 

    private static void testAdd() { 
     testList.add(0, 1); 
     assertEquals(new Integer[]{1, 0, 2, 2, 3, 3, 4, 5, 4}, testList.toArray()); 
    } 
} 

これはAbstractList

enter image description here

+1

私はちょうど 'testAdd'が失敗すると指摘したいと思います –

+0

@ cricket_007ええ、申し訳ありません、それはトータルテストの一部です:) – diofloyk

答えて

1
Arrays.asList 

からである元のリストにラッパーを返しますので、あなたは、リストの長さ(add()またはremove())を変更することはできません。

+0

あなたは完全に正しいです。私は私の答えを更新する – McNultyyy

+0

また、質問に答える前に、重複を見つけるために最小限の努力をしてください。これは特に何百回も尋ねられ、何百回も答えられました。代わりに、そのように閉じるためにフラグを立てる(または十分な評判を得たら投票する)。 –

-1

あなたが追加したい場合はこのリストにいくつかの要素があります。add(value)を使うことができます;インデックス0には追加するとインデックス0にいくらかの値が入ります testList.add(0、1); は、あなたが値を変更した場合には意味があります。これは正常です。 testList.set(6、5);

+1

あなたが何を表示しようとしているのかを説明するためにコードブロックの外にテキストを提供することが最善です –

+0

申し訳ありませんが、私はスプーグです – lonecloud

関連する問題