我可以创建一个对象数组来保存Java中的不同对象吗?

时间:2012-06-19 07:36:18

标签: java

是否有可能在Java中做这样的事情?

Object[] objArray = { new Car(), new Human() }

我读到数组元素都必须是同一类型,但这些类型都不是Object?

5 个答案:

答案 0 :(得分:3)

是的,它可能但不常用,而且总是很危险。

如果要将某些对象放入集合(列表或数组)中,则集合的类型必须允许共同的祖先。由于Object是Java中所有OO类型的共同祖先,因此您可以将任何内容放入其中(并且,使用Java 6的自动装箱,甚至原语)。

使用列表中的元素时会出现问题。只要您只需要调用共同祖先类型提供的方法,一切都很好。

但最终,你会想要调用Car类型的方法,这意味着你必须识别集合中的实例(这在代码中有点慢和非常笨拙)并使用强制转换(对于糟糕的代码总是一个好兆头。)

答案 1 :(得分:2)

你是对的,即使它不被认为是优秀的OO练习,这也很合适。

答案 2 :(得分:1)

继承用于定义 is-a 关系。由于Java中的每个类都扩展java.lang.Object(直接或间接),因此Car实例是-a Object实例,而Human实例是-a Object实例。

因此,当然,一系列物体可以容纳人类,汽车和其他各种物体。

答案 3 :(得分:0)

是的,可以做类似的事情,但不像OO那样。

确保在访问对象时进行明确的强制转换,例如

Human h = (Human) objArray[1337];

玩得开心!

答案 4 :(得分:0)

是的,有可能!由于Object是所有类的上层类