【发布时间】:2020-04-24 08:19:53
【问题描述】:
我有一个抽象类 A 和类 B 和 C。类 B 和 C 扩展 A。我需要将 B 和 C 放在列表中,比如 List。但是,B 和 C 有独特的方法,所以不是 List 中的所有项目都可以用来调用某些方法除非我向下转换,这被认为是一种设计味道。
我需要将 B 和 C 保留在同一个列表中,因为我想根据它们的共享属性对它们进行排序。是否将它们保留在其父类型的相同列表中,然后在这种情况下向下转换一个糟糕的设计?
【问题讨论】:
-
既然你需要一个混合列表,你真的别无选择。
-
是的,这是一种设计异味,但并非所有代码异味都等同于不良代码,只要您能找到好的论据来支持您对其他替代方案的决定。
标签: java generics inheritance arraylist downcast