求Java内置Object类的解释

Object a[] = new Object[2];

a[0] = "asd";

a[1] = 1;

我正在寻求解释这在 Java 中是如何实现的。我确实看过 Object 的实现,我必须寻求一些帮助才能理解它。


创建一个可以保存任何类型的变量,例如Python是内置的,但在Java中我们需要Object类。


在 Object 的实现中是什么允许它具有任何类型,请解释一下?


摇曳的蔷薇
浏览 83回答 2
2回答

暮色呼如

让我们一步一步来:Object是Java中所有引用类型的根源。凡是有参考价值的东西,也是instanceof Object!“显然”,a[0] = "asd";分配一个String。字符串默认是对象。最后, a[1] = 1;导致自动装箱。您正在将一个Integer对象分配给该数组槽,而不是原始int 值 1。当然,这里还值得一提的是协方差。

紫衣仙女

想象一下,你有一个类动物class Animal {    ...}以及扩展动物类的其他类,例如狗类和猫类:class Dog extends Animal {    ...}class Cat extends Animal {    ...}在容器(数组、列表...)中,您现在想要存储不同的对象。以下几点可能是显而易见的:Dog[] dogs = new Dog[2];dogs[0]    = new Dog("Bobby");dogs[1]    = new Dog("Jack");Cat[] cats = new Cat[2];cats[0]    = new Cat("Cathy");cats[1]    = new Cat("Jenny");不可能的是将狗存储在猫数组中,反之亦然。所以以下不起作用:cats[1]    = new Dog("Tommy"); or dogs[1]  = new Cat("Tammy");但是,如果您想在数组中包含不同的动物,则该数组必须是要存储在其中的所有动物的超类类型Animal[] pets = new Animal[3];pets[0]  = new Dog("Bobby");pets[1]  = new Cat("Cathy");pets[2]  = new Fish("Nemo");正如评论和上面的答案中已经提到的,Object是java中所有类的超级类。即使您编写自己的类,它也会扩展对象类。下面的东西是等价的:class MyOwnClass { ... }class MyOwnClass extends Object { ... }这意味着即使没有明确说明,每个类都会扩展对象类。因此,如果 object 是所有其他类的超类,您可以在类型为 object 的数组中执行与对 animal 数组所做的相同的操作。也就是说,里面存放不同的动物种类。因此(因为所有类都继承自该对象),以下适用,即使它没有多大意义Object[] objects = new Object[6];objects [0]  = "Some String";objects [1]  = 42;objects [2]  = Double.NEGATIVE_INFINITY;;objects [3]  = new Dog("Bobby");objects [4]  = new Cat("Cathy");objects [5]  = new File("C:\\temp\\test.txt");
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java