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”方法,所以尽管这是一种不好的做法,但为什么我不能这样做?>
答案 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();