在java中,异常至少包含以下四个构造函数:
Exception()
Exception(String message)
Exception(String message, Throwable cause)
Exception(Throwable cause)
Run Code Online (Sandbox Code Playgroud)
如果你想定义自己的扩展,你只需要声明一个后代异常并实现每个所需的构造函数调用相应的超级构造函数
你怎么能在scala中实现同样的东西?
假设我有以下类heirarchy:
class A()
class B(a:A)
class C(b:B)
class BaseClass(b:B, c:C)
Run Code Online (Sandbox Code Playgroud)
现在我想实现一个BaseClass的子类,它给出一个A的实例,并构造B和C的实例,并将它传递给它的超类构造函数.
如果我可以使用任意表达式,我会做这样的事情:
b = new B(a)
c = new C(b)
super(b, c)
Run Code Online (Sandbox Code Playgroud)
因为父构造函数的第二个参数依赖于第一个参数的值,但是我没有看到任何方法来执行此操作,不使用工厂函数或无偿的hack,例如:
class IntermediateSubclass(b:B) extends BaseClass(b, new C(b))
class RealSubclass(a:A) extends IntermediateSubclass(new B(a))
Run Code Online (Sandbox Code Playgroud)
有干净的方法吗?