1

我正在尝试扩展 Java Exception 类,但结果非常丑陋和笨拙。所以,我不确定我是否走在正确的轨道上。有没有更好的方法来做到这一点?

class ParentError(_d: Double, msg: String, cause: Throwable)
      extends Exception(msg: String, cause: Throwable) {
  def this() = this(0, null, null)
  def this(d: Double) = this(d, null, null)
  def this(msg: String) = this(0, msg, null)
  def this(msg: String, cause: Throwable) = this(0, msg, cause)
  def this(cause: Throwable) = this(0, null, cause)
  def i = _d
}

case class ChildError(_b: Boolean, _i: Double, msg: String, cause: Throwable)
      extends ParentError(_i: Double, msg: String, cause: Throwable) {
  def this(b: Boolean) = this(b, 0, null, null)
  def this(msg: String) = this(false, 0, msg, null)
  def this(msg: String, cause: Throwable) = this(false, 0, msg, cause)
  def this(cause: Throwable) = this(false, 0, null, cause)
  def b = _b
}

注意:我看到在 Scala 中,如何使用多个构造函数子类化 Java 类?但我不认为这是我要找的。谢谢

4

1 回答 1

5

使用默认值,例如:

class ParentError(i: Double = 0, msg: String = null, cause: Throwable = null)
      extends Exception(msg: String, cause: Throwable) {
      ⋮
}
于 2013-06-21T19:12:43.930 回答