Альтернативы java.lang.reflect.Proxy для создания прокси абстрактных классов (а не интерфейсов)

В соответствии сдокументация:

[java.lang.reflect.]Proxy предоставляет статические методы для создания динамических прокси-классов и экземпляров, а также является суперклассом всех динамических прокси-классов, создаваемых этими методами.

newProxyMethod метод (отвечает за генерацию динамических прокси) имеет следующую подпись:

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

К сожалению, это не позволяет генерировать динамический прокси, которыйпродолжается определенный абстрактный класс (а нереализации конкретные интерфейсы). Это имеет смысл, учитываяjava.lang.reflect.Proxy является «суперклассом всех динамических прокси», тем самым не давая другому классу быть суперклассом.

Поэтому есть ли альтернативыjava.lang.reflect.Proxy которые могут генерировать динамические прокси, которыеунаследовать из определенного абстрактного класса, перенаправляя все вызовы наАннотация методы к обработчику вызовов?

Например, предположим, у меня есть абстрактный классDog:

public abstract class Dog {

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

    public abstract void fetch();

}

Есть ли класс, который позволяет мне делать следующее?

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

Ответы на вопрос(2)

Ваш ответ на вопрос