Боюсь, это не сработает, так как настоящая прокси-магия происходит в этом родном коде
private static native Class defineClass0(ClassLoader loader, String name,
byte[] b, int off, int len);
, доступ к которому возможен только через статический метод Proxy.newProxyInstance(ClassLoader, Class<?>[], InvocationHandler)
.Этот метод, в свою очередь, вызывает конструктор сгенерированного таким образом класса с предоставленным InvocationHandler
в качестве параметра.
Так что у вас нет возможности вернуть Proxy из вызова newInstance()
.Самое близкое, что вы можете получить, - это создать экземпляр InvocationHandler
с помощью newInstance()
и передать его статическому фабричному методу.
Или вы можете сделать еще один шаг вперед, получить класс, реализующий целевой интерфейс(s), создает поле прокси через фабричный метод и делегирует все методы интерфейса Прокси.Но это будет прокси вокруг прокси, и я действительно не вижу в этом смысла.