由于您的类的共同祖先是
Object,并且由于
List<? extendsObject>不会使事情变得更简洁(毕竟,一切都会扩展
Object),因此看起来
List<Object>是一个不错的选择。
但是,这样的列表实在是一团糟:您需要检查内部对象的运行时类型,并据此做出决策。这绝对不是一件好事。
更好的选择是创建自己的类,以统一的方式对列表中的元素执行操作,并为每个子类型创建一个子类,以不同方式实现这些操作。这将使您以统一的方式处理列表,将每个对象的差异推到包装器中。
public interface ItemWrapper { int calculateSomething();}public abstract class IntWrapper implements ItemWrapper { private int value; public IntWrapper(int v) { value=v; } public int calculateSomething() { return value; }}public abstract class DoubleListWrapper implements ItemWrapper { private List<Double> list; public DoubleListWrapper (List<Double> lst) { list = lst; } public int calculateSomething() { int res; for (Double d : list) { res += d; } return res; }}// ...and so on现在,您可以列出
ItemWrapper对象以及对象的列表,而
calculateSomething无需检查其类型:
List<ItemWrapper> myList = new ArrayList<ItemWrapper>();for (ItemWrapper w : myList) { System.out.println( w.calculateSomething());}


