[英]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”類的靜態方法。
但是當我嘗試定義時:
`Array[] testarray = new Array[10];`
並使用:
`testarray.get(testarray[10]);`
我收到一個錯誤: cannot resolve method 'get(java.lang.reflect.Array)'
但我不明白為什么 - testarray
是類 Array 的對象,而類 Array 有一個方法“get”,所以雖然這是不好的做法,但為什么我不能這樣做?
Array
類是一個內部 Java 類,僅包含公共靜態方法,其預期用途是不能直接實例化。 以下代碼:
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));
也就是說,創建一個所需類型的數組,然后使用Array#get
訪問您想要的任何元素。
get()
不是數組類中的方法(如在 byte[] 對象中)。 get()
在Array
類中。 做Array.get(testarray, 0)
就是你想要的。 盡管如此,不要這樣做,而是使用testarray[0]
。
每當你使用靜態方法時,你不應該從對象調用它,你應該使用類實例,而不是這樣做
Object o = new Object();
o.staticMethod();
做:
Object.staticMethod();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.