Таким образом:
Closeable c = (Closeable) java.lang.reflect.Proxy.newProxyInstance(
getClass().getClassLoader(),
new Class[]{ Closeable.class },
new MyHandler(obj));
// works! by MyHandler is called instead.
c.close();
Таким образом, необходимые интерфейсы передаются в виде массива классов, а MyHandler - InvocationHanlder, принимающий объект делегата obj
в качестве параметра (если необходимо).
Все это описано здесь .