2017-09-30 5 views
0

でジェネリッククラスを参照してください、私はJSON文字列をデシリアライズしたい場合を考えてみましょうしかし、もし私が他のクラスを必要とするなら、私はそれを私のコードで提供し、コンパイルし直さなければなりません。私は自分のプログラムをより柔軟にしたい、それは私が使用したいクラスの名前を含む設定ファイルを取ることができます。だから、新しいクラスが必要なときは、クラス定義を書いて別のjarファイルに作り、クラスパスに入れてからプログラムを再起動するだけです。

val config = ConfigLoader.load("config.txt") 
    val className = config.getString("class-to-deserialize") 
    deserialize[<from className to type>](json) 

これはスケーラで可能ですか?

答えて

0

いいえ、型削除のために、関数def deserialize[T](json: String)がある場合、その動作は最初はTに依存することはできず、型パラメータとして渡す内容は関係ありません。最後にキャストを追加するだけでよいでしょう。可能です何

はまた、あなただけのクラス/タイプ名からパラメータを作成する必要があり、その場合には、暗黙のClassTagまたはTypeTagパラメータを受け付けるように関数を記述することであり、それは完全に可能です:ちょうど質問を検索しますこれについて。

関連する問題