我有一个相当奇怪的问题,但我认为最好澄清一下,然后按照我正在阅读的那本书。
目前,我正在了解Collections
以及如何将数组转换为List
。
例如,
String[] colors = {"red", "blue", green", "white", "orange"};
List<String> list = Arrays.asList(colors);
我的问题是为什么我们不能直接调用该方法?
String[] colors = {"red", "blue", green", "white", "orange"};
colors.asList();
对于String
类,我们可以通过调用方法直接将字符串对象转换为大写?
String[] colors = {"red", "blue", green", "white", "orange"};
String result = colors.toUpperCase();
答案 0 :(得分:2)
我的问题是为什么我们不能直接调用该方法?
您无法调用该方法,因为该方法不存在于任何数组类型类中。您无法调用未在类中定义的方法。例如:
class MyClass {
public void method() { }
}
您不能说new MyClass().whyCantICallThisMethod()
,因为MyClass
没有此方法。
也就是说,数组与其他类不同,因为它们是由JVM创建的(在运行时)。设计人员认为不适合要求JVM动态添加asList
方法。
答案 1 :(得分:0)
使用类名调用静态方法,并在实例上调用实例方法。 asList()
被定义为Arrays
类中的静态方法,因此您不需要创建Arrays
类的实例。相反,您将其调用为<Class-Name>.<Static-Method>
,在您的情况下为Arrays.asList()
。
因此,在您的示例代码中,对于String[] colors
数组,您无法调用asList()
方法。
此外,toUpperCase()
方法不适用于字符串数组,而是可以在String
对象上调用它。