次のリンクから以下のコードに出くわしました: http://javapapers.com/design-patterns/proxy-design-pattern/
次のコードを理解できません。
Animal proxy = (Animal) Proxy.newProxyInstance(realSubject.getClass()
.getClassLoader(), realSubject.getClass().getInterfaces(),
new AnimalInvocationHandler(realSubject));
私はリフレクションについて何もしていないので、誰かが私が理解するのを助けるためにいくつかのリソース/ポインタを提供してもらえますか?
import java.lang.reflect.Proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
interface Animal {
public void getSound();
}
class Lion implements Animal {
public void getSound() {
System.out.println("Roar");
}
}
class AnimalInvocationHandler implements InvocationHandler {
private Object realSubject = null;
public AnimalInvocationHandler(Object realSubject) {
this.realSubject = realSubject;
}
public Object invoke(Object proxy, Method m, Object[] args) {
Object result = null;
try {
result = m.invoke(realSubject, args);
} catch (Exception ex) {
ex.printStackTrace();
}
return result;
}
}
public class ProxyExample {
public static void main(String[] args) {
Animal realSubject = new Lion();
Animal proxy = (Animal) Proxy.newProxyInstance(realSubject.getClass()
.getClassLoader(), realSubject.getClass().getInterfaces(),
new AnimalInvocationHandler(realSubject));
proxy.getSound();
}
}