2011-09-11 14 views
10

scala.runtime निर्देशिका में स्कैला के स्रोत पेड़ में कुछ * .java फ़ाइलें हैं।scala.runtime में इन जावा फ़ाइलों का उद्देश्य क्या है?

वे फ़ाइलें बहुत सरल लगती हैं, ई। जी। DoubleRef.java इस तरह दिखता है:

package scala.runtime; 

public class DoubleRef implements java.io.Serializable { 
    private static final long serialVersionUID = 8304402127373655534L; 

    public double elem; 
    public DoubleRef(double elem) { this.elem = elem; } 
    public String toString() { return java.lang.Double.toString(elem); } 
} 

वहाँ किसी भी कारण है कि उन वर्गों स्काला में परिभाषित नहीं किया जा सकता है?

+1

बस एक अनुमान है। कोई स्थैतिक निर्माण निजी स्थैतिक क्षेत्र में संकलित नहीं होगा, और शायद यह java.io.Serializable द्वारा सही ढंग से काम करने के लिए आवश्यक है? –

+2

@ ब्रायन: इसके बजाय आप इसके लिए '@ SerialVersionUID' एनोटेशन का उपयोग करेंगे। – soc

उत्तर

5

बस एक अनुमान भी है: सार्वजनिक क्षेत्र में संकलित कोई स्कैला निर्माण नहीं है - सार्वजनिक क्षेत्र में सार्वजनिक सार्वजनिक क्षेत्र और सार्वजनिक एक्सेसर और म्यूटेटर के लिए स्कैला संकलन में सार्वजनिक var एस। जैसा कि मैंने कल्पना की है कि उन *Ref कक्षाओं का व्यापक रूप से उपयोग किया जाता है, यह अक्सर विधि कॉल से बचने और उन्हें प्रत्यक्ष क्षेत्र पहुंच के साथ बदलने का अनुकूलन हो सकता है।

+0

यह व्यवहार्य लगता है, लेकिन उन विधियों को घोषित नहीं करेगा 'अंतिम' जावा को ऑप्टिमाइज़ करने के द्वारा समान प्रभाव प्राप्त करते हैं? – Owen

+0

मुझे नहीं पता - शायद किसी भी अनुकूलन करने के लिए किसी को भी (कंपाइलर या जेवीएम) की आवश्यकता नहीं है ... –

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