我有一个名为Policy的抽象类,以及两个子类DepreciablePolicy和ExpirablePolicy 我有一系列政策,政策[]
我想检查我的对象属于哪个子类(如果是 Policy、DepreciablePolicy 或 ExpirablePolicy)
我通过使用 if 语句做到了这一点。
if (this.policies[polNum] instanceof DepreciablePolicy){
对于每种类型的子类,我必须运行不同的方法。 唯一的问题是我只能使用策略方法,而不能使用子类方法或构造函数。 有什么办法可以做到这一点吗?
最佳答案
这是以错误的方式进行继承。多态性的全部要点是您的代码不关心对象是哪个子类。您需要做的任何事情都应该通过策略来表达,策略实际上应该是一个接口(interface)。您的代码应该与基于该接口(interface)的策略进行交互,并且子类选择如何使用react。
话虽如此,您可能正在寻找简单的向下转换:
DepreciablePolicy d = (DepreciablePolicy) policy;
不过,这并不比糟糕设计上的劣质绷带更好。
关于java - 检查对象所在的子类,然后运行该子类中的方法 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14866677/