Java-将数组分配给对象引用
为什么我可以将数组指定给对象引用Java-将数组分配给对象引用,java,arrays,object,Java,Arrays,Object,为什么我可以将数组指定给对象引用 Object x = (Object) new int[] { 1, 2, 3 };// no error Object y = new int[] { 1, 2, 3 };//no error java数组是否继承类似于类的对象 我希望这会给我一个编译时错误 这样做: System.out.println(x.toString() + " " + x.getClass().getName() + " " + x.getClass().getTypeName(
Object x = (Object) new int[] { 1, 2, 3 };// no error
Object y = new int[] { 1, 2, 3 };//no error
java数组是否继承类似于类的对象
我希望这会给我一个编译时错误
这样做:
System.out.println(x.toString() + " " + x.getClass().getName() + " " + x.getClass().getTypeName());
结果:
[I@15db9742 [I int[]
java数组是否继承类似于类的对象
是的,因为数组是类的实例,就像其他对象一样。这就是为什么它们有hashCode、toString和getClass,它们从Object继承它们
发件人:
数组类型的超类型关系与超类关系不同。根据§4.10.3,整数[]的直接超类型是数字[],但根据整数[]§10.8的类对象,整数[]的直接超类是对象。这在实践中并不重要,因为对象也是所有数组类型的超类型
我的重点
可能与以下方面有关:
数组类型的变量保存对对象的引用
所有数组原语数组或对象数组都是对象。根据: 在Java编程语言中,数组是§4.3.1中的对象,是 动态创建,并可分配给Object类型的变量 §4.3.2. 类对象的所有方法都可以在数组上调用