栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Java中的列表中存储不同类型的元素

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Java中的列表中存储不同类型的元素

由于您的类的共同祖先是

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());}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/569343.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号