Я немного смущен этот сценарий:Что представляет собой объект «proxy» из списка параметров метода invoke в java.lang.reflect.InvocationHandler?
У меня есть класс, который реализует интерфейс InvocationHandler, упомянутый в заголовке, класс, который выглядит следующим образом:
class SimpleProxy implements InvocationHandler{
private Object proxied;
public SimpleProxy(Object proxied) {
this.proxied = proxied;
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println(proxy);
return method.invoke(proxied, args);
}
}
и позволяет сказать, в моем «основном» методе у меня есть:
public static void main(String[] args) {
consumer(new RealObject());
MyInterface proxy = (MyInterface)Proxy.newProxyInstance(MainClass.class.getClassLoader(), new Class[]{MyInterface.class}, new SimpleProxy(new MyInterfaceImpl()));
proxy.methodFromMyInterface();
}
Теперь проблема заключается в том, что "взывать" выдает ошибку, как:
...
в rtti.SimpleProxy.invoke (MainClass.java:81)
в RTTI. $ Proxy0.toString (Unknown Source)
на java.lang.String.valueOf (String .java: 2826)
на java.io.PrintStream.println (PrintStream.java:771)
на rtti.SimpleProxy.invoke (MainClass.java:81)
на RTTI . $ Proxy0.toString (Unknown Source)
на java.lang.String.valueOf (String.java:2826)
на java.io.PrintStream.println (PrintStream.java:771)
...
из этой линии:
System.out.println (прокси);
Если я прокомментирую эту строку, то работа прекрасна.
Может кто-нибудь объяснить мне, в чем проблема?
N.B. В документах Java говорится о вызове метода из InvocationHandler:
Обработает вызов метода на экземпляре прокси и возвращает результат. Этот метод будет вызываться в обработчике вызова, когда метод вызывается в экземпляре прокси, с которым он связан.
Параметры: прокси - прокси-экземпляр, что метод был вызван на
... так что я не могу понять, почему это происходит не так ...
Да. Ты зажгла меня. Спасибо! – artaxerxe