运行时在Java中运行时确定基类

时间:2011-07-15 16:18:42

标签: java inheritance runtime

我有两个类,一个是依赖于硬件的,另一个是非类的(我们分别称它们为HardwareDependent和HardwareIndependent)。硬件相关类扩展了硬件独立类。现在我有另一个类,至少必须是HardwareIndependent的扩展,但我希望它尽可能是HardwareDependent的扩展,因此它可以利用其他功能。是否有可能使用反射或其他东西来实现这一目标?或者这是技术上的不可能性吗?我想如果所有其他方法都失败了,我可以两次写课,但在我看来这是一种无效的方法。感谢您提前提供任何帮助。

1 个答案:

答案 0 :(得分:2)

继承在编译时是固定的。

听起来你不希望你的新类扩展 HardwareIndependent或HardwareDependent;你想要它使用一个可能是的对象。你想要组合而不是继承。你是第三类(我们称之为HardwareComposite)有一个对HardwareIndependent的引用。然后,您可以在运行时使用instanceof运算符检查它是否为HardwareDependent,如果是,则将其强制转换为HardwareDependent并使用提供的其他工具。

如果你的设计强迫你混合继承和组合的概念,你可能会看看Facade和Factory模式。