這個問題基本上是不言自明的。我無法找到數組的API(除了這個數組,但這只是定義了一堆用于處理實際數組的靜態輔助函數)。如果沒有它的類,這似乎表明一個數組不能是一個Object。但是,一個數組具有公共字段length和它可以調用的方法這樣的事實,.equals()并且.clone()似乎(非常強烈地)建議完全相反。對于原始數組的奇怪表示和行為有什么解釋?作為一個注釋,我試著在.clone()剛才的數組方法上使用“Open Implementation”Eclipse特性,希望我能夠看看這個方法的定義位置和方法(因為它說int []覆蓋了它對象),但它實際上導致我的整個Eclipse凍結并崩潰......
3 回答

慕萊塢森
TA貢獻1810條經驗 獲得超4個贊
每個數組類型都有一個類,所以有一個類int[],有一個類Foo[]。這些類由JVM創建。你可以通過int[].class,訪問它們Foo[].class。這些類的直接超類是Object.class
public static void main(String[] args)
{
test(int[].class);
test(String[].class);
}
static void test(Class clazz)
{
System.out.println(clazz.getName());
System.out.println(clazz.getSuperclass());
for(Class face : clazz.getInterfaces())
System.out.println(face);
}
還有一個編譯時亞型規則,如果A是的亞型B,A[]是的亞型B[]。

嗶嗶one
TA貢獻1854條經驗 獲得超8個贊
在Java語言規范應該給你一個想法:
數組類型的直接超類是Object。
每種數組類型都實現了接口Cloneable和java.io.Serializable。
而且:
對象是類實例或數組。
因此數組不是實例,因此您不需要構造函數來創建它們。而是使用陣列創建表達式。
添加回答
舉報
0/150
提交
取消