java - 检查对象所在的子类,然后运行该子类中的方法 - Java

标签 java abstract

我有一个名为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/

相关文章:

java - 对字符串和冒泡排序使用 charAt() 方法

java - 当我可以 ping 通 IP 地址时,为什么 InetAddress.isReachable 返回 false?

java - 无法在 Windows 8.1 中运行 jflex.bat

c++ - C++中的虚函数实例化有什么区别?

class - 模板方法模式和使用抽象(基)类之间的区别?

java - 为什么不能用new关键字在Java中初始化抽象类?

java - 为什么junit不运行注入(inject)的方法?

java - 类不是抽象的并且不会覆盖 Java 中的错误

Java - 如何完全清除变量

java - 在两种方法中使用 TextFields 而不声明通用