2011-10-20 40 views
2

我必須維護一些不再與公司合作的人編寫的代碼。我看到幾個引用java.lang.reflect.Array.getLength(anArray)。它的工作,但我從來沒有見過反射被用來獲得數組長度。有誰知道的區別:java java.lang.reflect.Array.getLength與array.length

java.lang.reflect.Array.getLength(anArray)anArray.length

難道只是語法糖?

謝謝!

回答

8

如果anArray是靜態類型到一個數組類型,應使用anArray.length(未方法調用,順便說一句)。如果只有對數組的引用爲Object,則可以使用反射表單。

6

這是獲取數組長度的技巧,無論是原始數組還是對象數組。這允許編寫一個在兩種數組類型上運行的方法。

考慮到打印任何類型的數組的內容的方法,包括:

void print(Object array) { 
    for (int i = 0; i < Array.getLength(array); i++) { 
     System.out.println(Array.get(array, i)); 
    } 
} 

這將INT的工作[]或對象[]參數。

否則,您應該只使用.length靜態字段。