Инициализация родительских полей - PullRequest
2 голосов
/ 18 октября 2010

В следующем примере ссылка на reason сохраняется как в родительском, так и в дочернем элементах.Я хотел бы избежать этого и хранить ссылку только в родительском (обычное использование исключений Java).

import java.lang.{Exception, Throwable}
class FileError(message: String, reason:Throwable) extends Exception(message, reason) {
  ...
}

Как инициализировать поле родительского класса без сохранения значения в объекте дочернего класса?

1 Ответ

8 голосов
/ 18 октября 2010

Если вы никогда не используете reason в классе FieldError, то он не будет сохранен в FieldError.

import java.lang.{Exception, Throwable}
class FileError(message: String, reason:Throwable) extends Exception(message, reason)

-

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);
      ()
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...