2016-04-15 14 views
1

スーパークラスのコンストラクタパラメータを呼び出す際に、どのように計算、メソッド呼び出しなどを行うかを調べようとしています。スーパークラスを拡張し、スーパークラスのコンストラクタパラメータでメソッドまたは遅延値を呼び出す方法

ここに例があります:私はRuntimeExceptionを拡張していて、スーパークラスのパラメータを決定するために自分のパラメータの計算を実行したいと思います。具体的には、私の最優先のエラーが何であるかを把握し、それをRuntimeExceptionメッセージに渡します。 RuntimeExceptionのメッセージ文字列をそのコンストラクタ以外に設定する方法は他にありません。

myErrorsが

class MyRunTimeException(val myErrors: List[Tuple2[Int,String]]) extends RuntimeException(myErrors.highestSeverityError) { 
    lazy val highestSeverityError = myErrors.sortBy(tup => tup._1).head._2 
} 

(重症度、messageString)のタプルのリストであるコンパイラは、それがスーパークラスのコンストラクタ呼び出しで「highestSeverityError」を解決することはできませんと言います。

答えて

3

スーパークラスが初期化される前にインスタンスメソッドを使用することはできません。 このようなものはあなたのために動作するはずです。

関連する問題