我有两个类(结构示例):
public class A { protected void doCheck(stuff) throw CommonException, A1Exception{ if(stuff==1){ throw new A1Exception(stuff); } throw new CommonException(stuff); } public void invokeAstuff(stuff) throw CommonException, A1Exception{ doCheck(stuff); } } public class B { protected void doCheck(stuff) throw CommonException, B1Exception{ if(stuff==1){ throw new B1Exception(stuff); } throw new CommonException(stuff); } public void invokeBstuff(stuff, otherStuff) throw CommonException, B1Exception{ doCheck(stuff); } }
"doCheck"方法具有相同的处理内容的逻辑,但是每个类都抛出一个不同的异常:A类的A1Exception和B类的B1Exception
我的问题是:如何编写将使用通用逻辑实现"doCheck"的基本类+在某些条件下应该抛出的异常类?A和B应该扩展这个类.
您可以创建一个通用抽象类,将异常声明为泛型类型,然后创建一个必须在子类中重写的供应商方法.
public abstract class Checkable{ protected abstract X getException(int stuff); protected void doCheck(int stuff) throws CommonException, X { if (stuff == 1) { throw this.getException(stuff); } throw new CommonException(stuff); } }
子类看起来像:
public class A extends Checkable{ @Override protected A1Exception getException(int stuff) { return new A1Exception(stuff); } public void invokeStuff(int stuff) { doCheck(stuff); } }
Ideone演示