Java调用处理程序和单例
我有一个单例对象“MySingle”,在我的所有类中,我都将其重新定义为Java调用处理程序和单例,java,android,reflection,Java,Android,Reflection,我有一个单例对象“MySingle”,在我的所有类中,我都将其重新定义为MySingle.createOrGetInstance() 现在我遇到的问题是,在调用MySingle中的方法之前,我想做一些方法日志记录和其他工作,所以我研究了Java InvocationHandler类 但是现在的问题是,我应该如何调用singleton方法,因为当我使用相同的代码而不是 DebugProxy.newInstance(new FooImpl()); 我这样做 DebugProxy.newInstan
MySingle.createOrGetInstance()代码>
现在我遇到的问题是,在调用MySingle中的方法之前,我想做一些方法日志记录和其他工作,所以我研究了Java InvocationHandler类
但是现在的问题是,我应该如何调用singleton方法,因为当我使用相同的代码而不是
DebugProxy.newInstance(new FooImpl());
我这样做
DebugProxy.newInstance(MySingle.createOrGetInstance())但是当我这样做的时候,当我把结果赋给变量`(MySingle sing)时,我得到了一个类强制转换表达式
我在安卓上开发,但我怀疑这有什么区别:)
谢谢,
费萨尔·阿比德(Faisal abid)针对android应用程序的调试是为android专门实现的diff.calss
查看此对于普通java应用程序(我不知道android),它将失败,因为java.lang.reflect.Proxy
仅适用于接口
动态代理类(以下简称为代理类)是一个类,在创建该类时实现运行时指定的接口列表,其行为如下所述
@见:
在您的例子中,来自java反射guid()的DebugProxy使用java.lang.reflect.Proxy
在您的代码中,MySingle
是一个类,但是java.lang.reflect.Proxy
只实现这个类的接口。因此,将为类MySingle
创建的java.lang.reflect.Proxy
强制转换到类必须MySingle
失败,因为该代理不是MySingle
的子类
一个可行的方法是:引入一个接口MySingle并实现一个类MySingleImpl(使用getInstance方法),然后在任何地方(除了创建)使用该接口