父字段初始化

Bas*_*evs 2 scala

在以下示例中,引用reason存储在父级和子级中.我想避免这种情况并仅将引用存储在父级中(通常使用Java异常).

import java.lang.{Exception, Throwable}
class FileError(message: String, reason:Throwable) extends Exception(message, reason) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

如何在不在子类对象中存储值的情况下初始化父类字段?

Bri*_*Hsu 8

如果你从未reasonFieldError课堂上使用过,那么就不会存储它FieldError.

import java.lang.{Exception, Throwable}
class FileError(message: String, reason:Throwable) extends Exception(message, reason)
Run Code Online (Sandbox Code Playgroud)

-

brianhsu@NBGentoo ~ $ scalac -print test.scala 
[[syntax trees at end of cleanup]]// Scala source: test.scala
package <empty> {
  class FileError extends java.lang.Exception with ScalaObject {
    def this(message: java.lang.String, reason: java.lang.Throwable): FileError = {
      FileError.super.this(message, reason);
      ()
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 好答案.只需稍加修正 - 您仍然可以在构造函数中使用它,例如打印它.只要稍后在对象的生命周期内不需要引用(例如,通过某种方法返回),就不会存储它. (2认同)