Equivalent to extending a final class in Java

java

Solution

Create a wrapper for the final class?

Something like this:

class MyClass {
    private FinalClass finalClass;

    public MyClass {
        finalClass = new FinalClass():
    }

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

A wrapper class like `MyClass` won't be accepted as an instance of `FinalClass`. If `FinalClass` implements any interfaces you can implement them in `MyClass` to make the classes more alike. The same is true of any non-final parents of the `FinalClass`; in that case your `MyClass` design should be compatible with those parent classes though.

It is even possible to create a wrapper class during runtime using reflection. In that case you can use the `Proxy` class. Beware that proxy classes do require in depth knowledge about the Java type system.

Problem

I know that in Java we can't extend a final class. But is there any alternative way where I get the effect of extending a final class? Because I have a final class with the requirements I am looking for, so if somehow I can reuse this, it would be of great help for me.

Original source