2010-10-05 14 views
6

बढ़ाता है मैं जानना चाहता हूं कि मैं स्कैला में जावा क्लास से स्थिर क्षेत्र कैसे निहित कर सकता हूं।स्कैला ऑब्जेक्ट जावा क्लास स्थिर क्षेत्र

यहां जावा उदाहरण है, यदि मैं क्लासफ्रॉम जावा नामक एक वर्ग है, तो मैं इसे बढ़ा सकता हूं, कुछ स्थैतिक फ़ील्ड जोड़ सकता हूं, और वर्जन फ़ील्ड तक पहुंचने के लिए उप-वर्ग का उपयोग कर सकता हूं।

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

लेकिन अगर मैं स्काला में क्लासफ्रॉम जावा को विस्तारित करना चाहता हूं, और कुछ निरंतर मूल्य जोड़ता हूं, तो ऐसा लगता है कि यह काम नहीं करता है।

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

यदि मुझे क्लासफ्रोस्काला में वर्जन वैरिएबल भी चाहिए तो मुझे क्या करना चाहिए?

उत्तर

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

इसलिए मुझे उन सभी फ़ील्ड को स्पष्ट रूप से घोषित करने की आवश्यकता है जिन्हें मैं उपयोग करना चाहता हूं, और उन्हें स्वचालित रूप से नहीं मिल सका। यह सही है? –

+0

ClassFromJava.VERSION क्यों दिखाई नहीं दे रहा है? – huynhjl

+1

@ ब्रायन - आपको उन्हें घोषित करने की आवश्यकता है _if_ आप उन्हें 'ClassFromScala.INHERITED_CONSTANT' के रूप में उपयोग करना चाहते हैं। @huynhjl - 'ClassFromJava.VERSION' दिखाई दे रहा है, लेकिन ब्रायन ने कहा कि वह 'क्लासफ्रोस्काला' को स्थिर भी दिखाना चाहता था। –

संबंधित मुद्दे