从数组实例调用 get(数组静态方法)

Calling get (array static method) from an array instance

Java 的新手,一般来说是 OOP。 我正在上在线 Lynda 课程,课程中有一个使用 Array.get 从数组中提取第二项的示例:

String[] myFavoriteCandyBars = {"Twix", "Hershey's", "Crunch"};
System.out.println(Array.get(myFavoriteCandyBars, 2));

并且讲师解释说 get 是来自 "Array" class 的静态方法。

但是当我尝试定义时:

 `Array[] testarray = new Array[10];`

并使用:

 `testarray.get(testarray[10]);`

我得到一个错误: cannot resolve method 'get(java.lang.reflect.Array)'

但我不明白为什么 - testarray 是 class 数组的对象,而 class 数组有一个方法 "get",所以虽然不好练习,为什么我做不到?

get() 不是数组 class 中的方法(如在 byte[] 对象中)。 get()Array class 中。做 Array.get(testarray, 0) 就是你想要的。尽管如此,不要这样做,而是 testarray[0]

每当你使用静态方法时,你不应该从对象中调用它,你应该使用 class 实例,而不是做

Object o = new Object();
o.staticMethod();

做:

Object.staticMethod();

Array class 是内部 Java class 仅包含 public 静态方法,其预期用途是不直接实例化.以下代码:

testarray.get(testarray[10]);

失败,因为 testarrayArray[] 类型,而不是 Array 类型,因此没有可用的静态方法 get()。假设地说,如果您可以在一个实例上调用 Array#get,它应该可以工作,但是如上所述,Array 无法实例化。

一个更典型的使用 Array 的方法是这样的:

String[] testarray = new String[10];
testarray[1] = "Snickers";
System.out.println(Array.get(testarray, 1));

即创建一个所需类型的数组,然后使用Array#get访问您想要的任何元素。