2017-03-20 2 views
0

Ich habe eine bereits vorhandene Klasse in Java geschrieben (lässt uns sagen, diese Klasse heißt X), die ein Feld/Element namens type enthält.Zugriff auf ein Java-Objekt Feld namens "Typ" von Scala

Ich möchte jetzt eine Scala-Klasse/Objekt schreiben, die ein Objekt vom Typ X erstellt und auf das type Mitglied dieses Objekts zugreifen.

Da jedoch type ein Schlüsselwort in Scala ist, funktioniert das nicht. Die Fehlermeldung in Eclipse ist: identifier expected but 'type' found.

Frage: Ist es möglich, das Feld zugreifen, ohne sie zu umbenennen?


Ein Arbeitsbeispiel:

Java-Klasse:

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

Scala App:

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

Antwort

1

Verwenden Sie entweder Backticks oder definieren Sie einen Getter.

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

oder einen 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

Danke! Da die Felder in der ursprünglichen Anwendung final sind (nur die Frage bearbeitet), haben wir keine Getter absichtlich geschrieben, aber gute Idee! –

+0

Ich mag 'Getter' s auch nicht, zu viel Ausführlichkeit. '@ Getter' für' statische' Variable klingt jedoch nicht gut. – prayagupd

Verwandte Themen