Java容器中的多种类型的对象

The*_*ear 8 java containers

我正在学习Java中的泛型,并且想知道这是否会被认为是糟糕的编码.

如果我声明ArrayList<Object>我知道我可以将任何类型的对象放入此列表中,因为所有对象都来自Object.我也知道,当我调用ArrayList.remove(index)从数组中取出的对象是Object类型时,我需要将其类型转换为我想要使用的对象类型.

现在假设我有对象Dog,CatCar.考虑到它们不是类似的类,将所有三个对象放入数组会不会很糟糕?

Sha*_*y D 4

让我们修改一下 a 的定义Collection,如Java集合简介教程中所示:

\n
\n

集合 \xe2\x80\x94 有时称为容器 \xe2\x80\x94 只是一个将多个元素分组为单个单元的对象。集合用于存储、检索、操作和通信聚合数据。通常,它们代表形成自然组的数据项[...]。

\n
\n

看看那些粗体字。这应该会给你答案。

\n

ArrayList如果您将不属于相同实现的对象放入其中,那么当您想要从列表中检索对象并将它们类型转换为适当的类型时,您肯定会带来麻烦。所以你应该避免这样做。

\n

考虑您将Dog和 的对象存储Car在 中ArrayList。\n然后,对于存储的每个对象,您想要调用某个方法,例如barkLoudly()。现在,这个方法可以很好地处理该Dog对象。但是当这个被调用时Carboooom ....Exception就会出现。

\n