다음은 프록시의 메커니즘을 보여 주려고 만든 예제다. 이 예제는 Integer 객체의 프록시로 배열을 채워 넣고 추적 메시지를 표시한 후 호출을 원래 객체로 전달한다.
Object[ ] values = new Object[1000];
for (int i = 0; i < values.length; i++) {
Object value = new Integer(i);
values[i] = Proxy.newProxyInstance(
null,
value.getClass().getInterfaces(),
// 호출 핸들러에 해당하는 람다 표현식
(Object proxy, Method m, Object[ ] margs) -> {
System.out.println(value + "." + m.getName() + Arrays.toString(margs));
return m.invoke(value, margs);
});
}