1

HTTP 要求を行うメソッドを持つ比較的単純なオブジェクトがあります。リクエストは、クラスの種類に応じてデータを自動的に抽出し、必要なオブジェクトを吐き出します。

問題は、クラスを動的に参照できないように見えることです。コード:

object abstractObject extends APIResource {

  def retrieve(clazz: String, key: String) = { 
    request("GET", instanceURL(key)).extract[clazz]
  }

}

clazzextractリクエストがオンザフライで JSON ハッシュをオブジェクトに解析できるようにするために渡されるタイプを定義します。その String を何らかの方法で使用して、クラス タイプを動的に参照し、それを に渡す必要がありextractます。

これを再構築する必要があるアイデアはありますか?

4

1 に答える 1

1

型はコンパイル時にのみ存在するため、実行時の値から型に移動することはできません。そうですね、Scala 2.10のリフレクションを使用すると、実行時に必要なコードを生成して実行することができます。コンパイラとリフレクションjarファイルの両方をアプリケーションにバンドルする必要があります。

しかし、あなたが提案しているものには、そのどれも必要ではありません。またはオブジェクトで十分ですがClassManifestもちろん、使用しているAPIがそのような代替手段を提供していない可能性があります。

于 2012-06-08T04:18:00.613 に答える