假设你有一个抛出一些异常A
的单例。getInstance()
进一步假设A
在整个程序中到处都在使用它,虽然A.getInstance().doSomethingUseful()
很好,但很多代码都从Constants
接口继承,我想声明:
A a = A.getInstance()
在Constants
,允许每个人都Constants
可以访问a
.
但是,正如预期的那样,Java
抱怨方法抛出异常,因此不能在接口中声明。
有解决方法吗?
只需将已检查的异常转换为未检查的异常
static A getInstanceA2() throws Error
{
try
{ return A.getInstance(); }
catch(Exception e)
{ throw new Error(e); }
}
interface Constants
{
A a = getInstanceA2();
}
如果getInstane()
失败,界面Constants
将被破坏,您的应用程序可能会崩溃。
A
如果和之间存在循环依赖Contants
,A
可能会观察到一些未初始化的静态字段Constants