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

时间:2019-06-20 04:27:50

标签: java arrays methods static instance

Java和OOP的新增功能。 我正在上在线Lynda课程,该课程中有一个使用Array.get从数组中提取第二项的示例:

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

然后讲师解释说,get是“ Array”类中的静态方法。

但是当我尝试定义时:

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

并使用:

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

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

但是我不明白为什么-testarray是Array类的对象,而Array类具有“ get”方法,所以尽管这是一种不好的做法,但为什么我不能这样做?

2 个答案:

答案 0 :(得分:1)

principle of least surprise类是一个内部Java类,仅包含公共静态方法,并且不应直接实例化其预期用途。以下代码:

npm upgrade react-native-device-info@latest
react-native run-android

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

更典型的使用Array的方式如下:

Array

也就是说,创建所需类型的数组,然后使用String[] testarray = new String[10]; testarray[1] = "Snickers"; System.out.println(Array.get(testarray, 1)); 访问所需的任何元素。

答案 1 :(得分:0)

get()不是数组类中的方法(例如,在byte []对象中)。 get()Array类中。做Array.get(testarray, 0)是您想要的。尽管如此,请不要执行此操作,而应执行testarray[0]

无论何时使用静态方法,都不应从对象中调用它,而应使用类实例,所以不要这样做

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

要做:

Object.staticMethod();