2010-10-05 2 views
6

Я хотел бы знать, как я мог бы вставить статическое поле из класса Java в Scala.Объект Scala расширяет статическое поле класса Java

Вот пример Java, если я класс с именем ClassFromJava, я мог бы расширить его, добавить некоторое статическое поле и использовать подкласс для доступа к полю VERSION.

public class ClassFromJava { 
    public static int VERSION = 1; 
} 

public class ClassFromJavaSub extends ClassFromJava { 
    public static String NOTE = "A note"; 
} 

public class Test { 
    public static void main (String [] args) { 
     System.out.println (ClassFromJavaSub.VERSION); // This works. 
    } 
} 

Но если я хочу расширяет ClassFromJava в Scala, и добавить некоторую постоянную величину, кажется, не работает.

object ClassFromScala extends ClassFromJava { 
    val NOTE = "A Note" 
} 

object Test { 
    def main (args: Array[String]) { 
     // This line won't compile 
     // ClassFromScala has no value VERSION. 
     println (ClassFromScala.VERSION) 
    } 
} 

Что делать, если класс ClassFromScala также имеет переменную VERSION?

ответ

4
object ClassFromScala extends ClassFromJava { 
    def VERSION = ClassFromJava.VERSION 
} 
+0

Так что мне нужно явно объявить все поля, которые я хочу использовать, и не мог их автоматически. Это правильно? –

+0

Почему ClassFromJava.VERSION не отображается? – huynhjl

+1

@Brian - вам нужно объявить их _if_, вы хотите использовать их как 'ClassFromScala.INHERITED_CONSTANT'. @huynhjl - 'ClassFromJava.VERSION' видна, но Брайан сказал, что он хотел, чтобы у ClassFromScala тоже была константа. –