New*_*ger -1 java inheritance class instanceof
我有一个类PartA和一个类PartB派生类PartA.我有一个PartA包含a和b部分的类型列表.我需要确定当我循环它时它实际上是哪种类.但如果我这样做:
for (PartA i : parts) {
if (i instanceof PartA) {
//some logic
}
Run Code Online (Sandbox Code Playgroud)
无论它实际上是哪一类,它仍然会成立:a或b.
我做错了什么,如果没有,我能做些什么来达到预期的效果呢?
实例PartB 也是实例PartA.始终首先检查派生类型最多.(读instanceof X为"是...的实例X或派生类型X.")
或者,更好的是,将多态性用于您的优势 - 可以将此逻辑移动到PartA您可以覆盖的方法中PartB吗?然后你不必实际测试对象的类型,你只需让虚拟方法调度为你找出.
| 归档时间: |
|
| 查看次数: |
156 次 |
| 最近记录: |