这个问题基本上是不言自明的。我无法找到数组的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
提交
取消