Yes and no.
You can use bytecode manipulation to change a final
class to non-final
on the fly. This doesn't even break binary compatibility, so there is no risk of class loader / verifier errors.
However, you have to apply the bytecode modifications to the final
class itself. You can't do bytecode manipulation on a child class to make it inherit from a final
parent class. Or more precisely, if you do that the modified child class will be rejected by the verifier when loaded together with the final
parent class.