Java では、配列をリストに変換したいと考えていました。Java が OOP 言語であることを考えると、次のようなことを期待していました。
int[] myArray = { 1, 2, 3 }; // non-working code
List myList = myArray.toList();
array
しかし、オブジェクトに toList メソッドがなく、私が望んでいたことを行う正しい方法が次のとおりであることがわかったときは驚きました。
int[] myArray = { 1, 2, 3 }; // working Java code
List myList = Arrays.asList(myArray);
最初は an はオブジェクトと見なされていないのかと思っていましたが、onint[]
などのメソッドを呼び出すことができたclone()
ので、オブジェクトであると確信しています。
Java の設計者は、なぜ最初のアプローチ (OOP の原則と一致するオブジェクトを操作する) ではなく、2 番目のアプローチ (OOP と矛盾する静的メソッド) を使用したのですか?
私は、C++ が 2 番目のアプローチのようなことを行うことに気付きました。これは、C から残った手荷物であると想定しています。しかし、C# にはToList()
メソッドがあります。
OOP に向けた進化の行進を保留するだけですArrays.asList()
か、それともこのようにする根本的な理論がありましたか?