在Java中,我想把一个数组转换成一个列表。既然Java是一种面向对象的语言,我期望可以像下面这样做:
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);
起初我想知道
int[]
是否不被认为是一个对象,但我可以调用clone()
等方法,所以我确定它是一个对象。为什么Java的设计者使用了第二种方法(静态方法与OOP不一致),而不是第一种方法(基于对象的OOP原则)?
我注意到C ++也会使用第二种方法,我认为这是从C语言遗留下来的负担。但在C#中,有一个
ToList()
方法。
Arrays.asList()
只是抵制向OOP演进的一种方式,还是有一些潜在的理论支持这种做法?