我知道在Java中我们无法扩展 final类。但是,有没有其他方法可以使我扩大结业课呢?

因为我有一个满足要求的最后一个类,所以如果我能以某种方式重用它,那对我会很有帮助。

最佳答案

为 final类创建一个包装器?

像这样:

class MyClass {
    private FinalClass finalClass;

    public MyClass {
        finalClass = new FinalClass():
    }

    public void delegatingMethod() {
        finalClass.delegatingMethod();
    }
}

MyClass这样的包装类将不被接受作为FinalClass的实例。如果FinalClass实现了任何接口(interface),则可以在MyClass中实现它们,以使类更相似。对于FinalClass的所有非最终 parent 也是如此;在这种情况下,您的MyClass设计应该与那些父类兼容。

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

07-24 09:25