2017-03-20 5 views
0

J'ai une classe déjà existante écrite en Java (disons que cette classe s'appelle X) qui contient un champ/membre nommé type. Je veux maintenant écrire une classe/objet Scala qui crée un objet de type X et accéder au membre type de cet objet.Comment accéder au champ d'un objet Java nommé "type" à partir de Scala

Cependant, puisque type est un mot-clé dans Scala, cela ne fonctionne pas. Le message d'erreur dans Eclipse est: identifier expected but 'type' found.

Question: Est-il possible d'accéder à ce champ sans le renommer?


Un exemple de réalisation:

classe Java:

public class X { 
    public final int type = 0; 
} 

App Scala:

object Playground extends App { 
    val x : X = new X(); 
    System.out.println(x.type); // This does not work! 
} 

Répondre

1

Soit utiliser des retours arrière ou définir un gettter.

object Playground extends App { 
    val x : X = new X(); 
    System.out.println(x.`type`) 
} 

ou en utilisant un getter,

public class X { 
    public int type = 0; 

    public int getType() { 
    return type; 
    } 
} 

object Playground extends App { 
    val x : X = new X(); 
    System.out.println(x.getType()); 
} 
+0

Merci! Puisque les champs sont finaux dans l'application originale (juste édité la question), nous n'avons pas écrit des getters exprès, mais bonne idée! –

+0

Je n'aime pas non plus Getter, trop de verbosité. '@ Getter' pour la variable' static' ne sonne pas super bien. – prayagupd