- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
假设我有这个类层次结构:
Animal <-- FourLegged <-- Dog
Animal <-- FourLegged <-- ....
Animal <-- ThreeLegged <-- ... (what has 3 legs?)
Animal <-- TwoLegged <-- Chicken
Animal <-- TwoLegged <-- ...
(忘记了四足动物和两足动物的科学术语是什么。但这不是重点,对吧?:))
如果我有一个 Animal
对象,并且我需要知道它是 FourLegged
还是 TwoLegged
,我通常会执行 animalObject instanceof FourLegged
。
这比向 Animal
类添加一堆 isFourLegged()
、isThreeLegged()
、isTwoLegged()
慢吗?
(我想知道性能影响。这不是设计练习。因此,如果您不会浪费时间建议如何重写该类,我将不胜感激)
编辑有些人建议添加“getNumberOfLegs()”,在这个具体示例中这是完全合理的。但假设重点不是要知道腿的数量,而是要获取这是什么类型的动物。
最佳答案
如果您的子类没有添加任何行为,而只是指定腿数的一种方式,那么您应该使用 this refactoring称为用字段替换子类。 => 不再需要子类。
否则,添加一个多态方法,例如:numberOfLegs()
,由每个 Animal
的子类实现。
关于java - 使用 instanceof 与将 isSomething() 添加到基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23395774/
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 7 年前。 Improve
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
假设我有这个类层次结构: Animal 不再需要子类。 否则,添加一个多态方法,例如:numberOfLegs(),由每个 Animal 的子类实现。 关于java - 使用 instanceof
我们总是在 Symfony2 中将实体用作仅具有 setter 和 getter 的普通 PHP 对象。但是如果我们在一个实体中有集合,那么在其中放置方法可能会有用,比如 hasSomePropert
我是一名优秀的程序员,十分优秀!