2010-10-05 35 views
6

我想知道如何从Scala中的Java类中内在静态字段。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. 
    } 
} 

但是,如果我想在Scala中扩展ClassFromJava,并添加一些常量值,它似乎不起作用。

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

所以我需要显式声明我想要使用的所有字段,并且不能自动使用它们。这是正确的吗? – 2010-10-05 14:23:30

+0

为什么ClassFromJava.VERSION不可见? – huynhjl 2010-10-05 14:29:31

+1

@Brian - 你需要声明他们_if_你想使用他们作为'ClassFromScala.INHERITED_CONSTANT'。 @huynhjl - 'ClassFromJava.VERSION'是可见的,但Brian表示他希望'ClassFromScala'似乎也具有常量。 – 2010-10-05 15:41:23