Вы не можете напрямую перехватывать вызовы методов существующих методов, не подключаясь, например, к логике реализации. Один из подходов состоит в том, чтобы разделить логику реализации на фабрику, которая может использовать, например, Proxy .
public class FooFactry() {
private InvocationHandler handler;
public FooFactory(InvocationHandler handler) {
this.handler = handler;
}
public Foo newInstance() {
return (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(),
new Class[] { Foo.class },
handler);
}
}
Вы можете использовать пользовательский InvocationHandler
для перехвата любого метода, выданного Foo
. Вы также можете создать свою собственную оболочку, чтобы избежать динамических прокси, class FooWrapper extends Foo{}
для достижения того же результата.