2010-10-05 18 views
6

Mi piacerebbe sapere come è possibile ereditare il campo statico dalla classe Java in Scala.L'oggetto Scala estende il campo statico della classe Java

Ecco un esempio Java, se io una classe denominata ClassFromJava, potrei estenderla, aggiungere qualche campo statico e usare la sottoclasse per accedere al campo 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. 
    } 
} 

Ma se voglio estende ClassFromJava a Scala, e aggiungere un po valore costante, non sembra funzionare.

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) 
    } 
} 

Cosa devo fare se desidero che ClassFromScala disponga anche della variabile VERSION?

risposta

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

Quindi ho bisogno di dichiarare esplicitamente tutto il campo che voglio usare e non potrei averli automaticamente. E 'giusto? –

+0

perché ClassFromJava.VERSION non è visibile? – huynhjl

+1

@Brian - Devi dichiararli _se vuoi usarli come 'ClassFromScala.INHERITED_CONSTANT'. @huynhjl - 'ClassFromJava.VERSION' è visibile, ma Brian ha detto di volere che' ClassFromScala' abbia anche la costante. –

Problemi correlati