使用Hash Set for Specific data的Polymorphish实现

时间:2015-04-15 05:49:50

标签: java polymorphism linkedhashset

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

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

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

2 个答案:

答案 0 :(得分:2)

您希望在孩子之间共享的数据应放在父级中。如果这个孩子有这个方法,如果你想出一个BadChild类,你现在只有一个子类?我必须建议的最佳做法是认为这是一个真实世界的例子。

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

答案 1 :(得分:0)

是的,这是一个好方法,除非你没有进行任何转换以达到Child实例。如果您需要对Child课程执行任何特殊操作,请向Parent课程添加方法,然后覆盖它。