相当于在Java中扩展最终类

我知道在Java中我们无法扩展最终的类。 但有没有其他方法可以让我获得延伸最终课程的效果?

因为我有一个符合我要求的最终课程,所以如果我能以某种方式重复使用它,那对我来说会有很大的帮助。

为最终类创建一个包装器?

像这样的东西:

class MyClass { private FinalClass finalClass; public MyClass { finalClass = new FinalClass(): } public void delegatingMethod() { finalClass.delegatingMethod(); } } 

MyClass这样的包装类不会被接受为FinalClass的实例。 如果FinalClass实现了任何接口,您可以在MyClass实现它们,以使类更相似。 FinalClass的任何非最终父母也是FinalClass ; 在这种情况下,你的MyClass设计应该与那些父类兼容。

甚至可以在运行时使用reflection创建包装类。 在这种情况下,您可以使用Proxy类 。 请注意,代理类确实需要有关Java类型系统的深入知识。

最简单的选择是编写一个包装器,它包含最终类的实例作为成员变量,并充当最终类的代理。

这样,很容易覆盖或扩展最终类的方法。