newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h);
返回指定接口的代理类的实例,该接口将方法调用分派给指定的调用处理程序。
我需要封装此方法返回的实例(例如,进入其他类),这样它也会扩展其他类。所以最后一个类将扩展一个类并实现指定的接口。
要扩展的类是:
public class IProxy {
ObjectRef oref;
public IProxy(ObjectRef oref) {
this.oref = oref;
}
}
所以这个过程应该是:
MyInterface() mi=(MyInterface) newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h);
// some magic trick
最后我希望有一个类的实例扩展IProxy并实现mi实现的所有接口。
答案 0 :(得分:2)
你不能这样做,因为从newProxyInstance
返回的对象已经从其他一些类继承,你不能从Java继承两个类。
您需要将oref
保留为实现InvocationHandler
接口的类的实例变量。您将在oref
的构造函数中初始化InvocationHandler
,并通过方法提供访问oref
的界面:
public interface IProxy {
ObjectRef getOref();
}
您的InvocationHandler
应该通过返回其getOref
成员来回复oref
的来电。