Alternativas ao java.lang.reflect.Proxy para criar proxies de classes abstratas (em vez de interfaces)

De acordo coma documentação:

[java.lang.reflect.]Proxy fornece métodos estáticos para criar instâncias e classes de proxy dinâmicas e também é a superclasse de todas as classes de proxy dinâmico criadas por esses métodos.

onewProxyMethod método (responsável por gerar os proxies dinâmicos) tem a seguinte assinatura:

public static Object newProxyInstance(ClassLoader loader,
                                      Class<?>[] interfaces,
                                      InvocationHandler h)
                             throws IllegalArgumentException

Infelizmente, isso impede a geração de um proxy dinâmico queestende uma classe abstrata específica (em vez deimplementação interfaces específicas). Isso faz sentido, considerandojava.lang.reflect.Proxy é "a superclasse de todos os proxies dinâmicos", impedindo que outra classe seja a superclasse.

Portanto, existem alternativas parajava.lang.reflect.Proxy que pode gerar proxies dinâmicos queherdar de uma classe abstrata específica, redirecionando todas as chamadas para oabstrato métodos para o manipulador de invocação?

Por exemplo, suponha que eu tenha uma classe abstrataDog:

public abstract class Dog {

    public void bark() {
        System.out.println("Woof!");
    }

    public abstract void fetch();

}

Existe uma classe que me permita fazer o seguinte?

Dog dog = SomeOtherProxy.newProxyInstance(classLoader, Dog.class, h);

dog.fetch(); // Will be handled by the invocation handler
dog.bark();  // Will NOT be handled by the invocation handler

questionAnswers(2)

yourAnswerToTheQuestion