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

Java 从数组实例调用get(数组静态方法),java,arrays,methods,static,instance,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]

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]);`
我得到一个错误:
无法解析方法“get(java.lang.reflect.Array)”

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

get()
不是数组类中的一个方法(比如在byte[]对象中)
get()
位于
Array
类中。执行
Array.get(testarray,0)
就是您想要的。尽管如此,不要这样做,而是执行
testarray[0]

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

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

该类是一个只包含公共静态方法的内部Java类,其预期用途是不直接实例化。以下代码:

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

使用
数组
的更典型方法如下:

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

也就是说,创建所需类型的数组,然后使用
array#get
访问所需的元素。

array.get(testarray,10)
而不是
testarray.get(testarray[10])@goodvibration这有点不正确我知道不应该这样使用它,但问题是我即使尝试也不能使用它,我的问题是为什么?testarray是class Array的一个对象,class Array有一个方法“get”,为什么它不工作?
Array#get()
是一个静态方法,与
Array
类关联,而不是与
Array
类的实例关联。回顾实例与静态方法,以更好地理解这里发生了什么。但这正是我最初的问题——“为什么我不能这么做?”。当然,我在询问之前试着复习了一下。我看了:最后它说:“nstance方法可以直接访问静态变量和静态方法。”所以我仍然不知道为什么这不可能。@guest2020您的代码当然可以正常工作,还有我的更新答案。谢谢,看了数组定义,发现就像您说的那样——“类数组不可实例化”(在评论中这样说):构造函数是“private”的,新的实例方法是静态的(Singleton)。如果我错了,请纠正我。
String[] testarray = new String[10];
testarray[1] = "Snickers";
System.out.println(Array.get(testarray, 1));