public interface Base{ public void base();}class Child1 extends Base{ public void base(){} //实现接口方法 public void a(){} //两个子类,方法不同,也中是重写父类的方法}class Child2 extends Base{ public void base(){} //实现接口方法 public void b(){} //两个子类,方法不同,也中是重写父类的方法}public class Other{ public static void main(String[] args){ } public static calc(Base b){ b.base(); //调用接口方法 if (b instanceof Child1){ ((Child1)b).a(); //为了转型安全,使用intanceof 先判断是不是Child1的对象 } else if (b instanceof Child2){ ((Child2)b).b(); //为了转型安全,使用intanceof 先判断是不是Child2的对象 } }}必须使用instanceof的情况,假设类A有两个子类B和C,需要运行时根据类B或C的对象来执行不同的逻辑,这种情况就必须用instanceof。较常出现这种情况是当使用Vector,由于其内部存储的是Object,需将其向下转型才能正常使用。此外解决这类问题还有一种方式就是使用try/catch语句块,不过一般的情况不建议使用try/catch语句块
本文介绍了Java中如何通过instanceof关键字实现安全的向下转型,以及如何利用这一特性处理多态对象的不同方法调用场景。具体示例展示了如何在运行时判断对象的具体类型并执行相应的操作。
1069

被折叠的 条评论
为什么被折叠?



