是否可以为具有不同接口(interface)的多个对象定义一个调用处理程序(代理)?
因为这个代理对对象所做的事情(所有检查等)是相同的(并且它们共享一个锁管理表,我更喜欢将其放在代理上的一个地方),
有办法做到吗?
谢谢, 阿里安
最佳答案
那么,实现这一点的方法是使用一个代表通用 IH 代码的基类,然后为每个特定调用对其进行子类化。
否则,您可以检查传入的对象,并确定适当的操作:
public Object invoke(Object proxy, Method method, Object[] args) {
if (proxy instanceof InterfaceA) {
handleInterfaceA(proxy, method, args);
} else if (proxy instanceof InterfaceB) {
handleInterfaceB(proxy, method, args);
}
}
但是由于 Java 已经有了类分派(dispatch)机制,所以使用它比使用一堆 IF 或 switch 语句更好。
关于java - 一个 IncallingHandler 的多个接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13338217/