8

はこのような何かを考えてみましょう:コンパイル時にシングルトンオブジェクトのクラスを取得する方法は?

object Singleton 

val cls: Class[Singleton] = ??? 

私が代わりに???の記述する必要がありますか?

私はclassOf[Singleton]classOf[Singleton.type]Singleton.typeを試しましたが、何も処理されませんでした。

...(私はもちろんclassOfgetClass、ランタイムバージョンを知っているが、それは私が求めているものではないのです。)ここで

答えて

6

ソリューション、それはかなりありません

object Singleton 

val cls : Class[Singleton] = Singleton.getClass.asInstanceOf[Class[Singleton]] 

編集:別の質問/回答を読んだ後で解決策を完了しました:Scala equivalent of Java java.lang.Class<T> Object

注1:タイプ消去は、これが特に有用であることを防ぐでしょう。パターンマッチングで。

注2:scala -explaintypesフラグはタイプエラーを理解する上で非常に便利です。

HTH

+1

'.asInstanceOf [AnyRef]'は動作しないようです。 – axel22

+0

良い点!更新された回答、ありがとう – laher

4

この問題は単独ではありません。答えは:現在、Singleton.getClassを避ける方法はありません。詳細については、thisコメントを参照してください。なぜclassOf[Singleton]が機能しないのですか。

関連する問題