gpt4 book ai didi

java - 数组是原始类型还是对象(或完全是其他东西)?

转载 作者:IT老高 更新时间:2023-10-28 20:29:48 27 4
gpt4 key购买 nike

这个问题基本上是不言自明的。我还没有找到数组的 API(除了这个 Arrays ,但这只是定义了一堆用于处理实际数组的静态辅助函数)。如果它没有类,这似乎表明数组不能是 Object

然而,数组具有像 length 这样的公共(public)字段以及它可以调用的方法,如 .equals().clone() 似乎(非常强烈地)建议完全相反。

原始数组的奇怪表示和行为的解释是什么?

作为说明,我刚才尝试在数组的 .clone() 方法上使用“Open Implementation” Eclipse 功能,希望我能够查看在哪里以及如何这个方法是定义的(因为它说 int[] 从 Object 覆盖它),但它实际上导致我的整个 Eclipse 卡住并崩溃......

最佳答案

每个数组类型都有一个类,所以 int[] 有一个类,Foo[] 有一个类。这些类是由 JVM 创建的。您可以通过 int[].classFoo[].class 访问它们。这些类的直接父类(super 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);
}

还有一个编译时子类型规则,如果AB的子类型,A[]B的子类型[].

关于java - 数组是原始类型还是对象(或完全是其他东西)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12806739/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com