64 votes

Comment obtenir la classOf d'un type d'objet scala ?

Je me demande comment obtenir un objet de classe pour un type d'objet en Scala. Ok, c'est un peu fort de gueule à cause du double sens du mot objet. Voici donc un exemple qui va échouer :

object Main
{
   private [this] val TAG = classOf [Main].getName;
} // Main

Si Main était la classe, elle fonctionne parfaitement. Avez-vous des idées ?

94voto

Alexey Romanov Points 39124
scala> Main.getClass
res1: java.lang.Class[_] = class Main$

17voto

Jesper Points 65733

La raison pour laquelle classOf[Main] ne fonctionne pas, c'est parce que Main n'est pas un type .

Les classes et les traits définissent des types, pas les objets.

9voto

Joachim Isaksson Points 85969

Comme Main est un objet, pour que votre exemple fonctionne, il suffit de remplacer votre ligne d'affectation par ;

private [this] val TAG = this.getClass.getName;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X