【问题标题】:Polymorphish implementation with Hash Set for Specific data具有特定数据的哈希集的多态实现
【发布时间】:2015-04-15 05:49:50
【问题描述】:

我有一组对象(父对象)。对于特定条件,我想向该对象添加额外数据。所以我创建了一个从父类扩展的子类,将数据放入子类并将其放回父集。从理论上讲,这是可能的。但这是这样做的好方法吗?请建议我任何其他更好的方法。

另一种方法是创建一组 Child 而不是 Parent。直接把数据给孩子。但我不能这样做,因为父集将转换为 Json,并且所有父对象都不需要多余的字段。

final LinkedHashSet<Parent> parentSet = new LinkedHashSet<Parent>();
parentSet.add(new Parent("AAA"));
parentSet.add(new Parent("ABC"));
parentSet.add(new Parent("DXX"));
parentSet.add(new Parent("GHI"));

final LinkedHashSet<Parent> childSet = new LinkedHashSet<Parent>();
final Iterator<Parent> iterator = parentSet.iterator();
while (iterator.hasNext()) {
  final Parent parent = iterator.next();
  if (parent.str.startsWith("A")) {
    iterator.remove();
    childSet.add(new Child(parent.str, 27));
  }
}
parentSet.addAll(childSet);

【问题讨论】:

    标签: java polymorphism linkedhashset


    【解决方案1】:

    您要在子级之间共享的数据应放在父级中。现在你只有一个子类,如果你想出一个 BadChild 类,这个孩子应该有这个方法吗?我必须建议的最佳做法是像现实世界的例子一样思考。

    例如,父母必须知道孩子的确切身高吗?孩子必须知道父母的确切年龄吗?

    【讨论】:

      【解决方案2】:

      是的,这是一个好方法,除非您不进行任何强制转换以到达 Child 实例。如果您需要对Child 类做一些特殊的事情,请在Parent 类中添加一个方法,然后覆盖它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-30
        • 2013-12-21
        • 2019-04-23
        • 2018-08-12
        • 1970-01-01
        • 2021-11-10
        • 2016-03-25
        • 1970-01-01
        相关资源
        最近更新 更多