List
こんな感じで作成
List<Integer> list = Arrays.asList(array);
※:addメソッド等を使うと、実行時エラーとなる
arrayを参照しているだけなので、arrayを変更すると、反映される。
ArrayList
こんな感じで作成
List<Integer> arrayList = new ArrayList<Integer>(Arrays.asList(array));
※ArrayListからListに修正しました。
addメソッドが使える
arrayの値を元に新しいインスタンスを作成しているため。独立したオブジェクトとなる。
追記(2020/1/28)
ご指摘いただき、内容が面白かったため、記載
Arrays.asList(array)
の返り値であるArrayList
のadd
メソッドを使用すると例外を吐く理由は以下。
1. ArrayList
クラスが、add
メソッドを継承しておらず、親クラスのadd
メソッドを使用している。
2. ArrayList
クラスが継承しているAbstractList
はadd
を、例外を吐くように実装している(オーバーライド前提としているため)
※このArrayList
はArrays
の内部クラスであり、本文中のArrayList
とは異なる。