2012-08-14 16 views
5

स्कैला में हमारे पास पैरामीटर रहित विधियां हो सकती हैं, जो डीएसएल उद्देश्यों के लिए बहुत उपयोगी हो सकती हैं; वे कक्षा क्षेत्रों के लिए ऑटो-डिफ़ाइनिंग गेटर्स के लिए भी उपयोग किए जाते हैं।क्या आप स्कैला में उपयोग के लिए जावा में पैरामीटर-कम विधियों की घोषणा कर सकते हैं?

मैं जावा लाइब्रेरी विकसित कर रहा हूं जिसे मैं संभवतः स्कैला के साथ सहजता से एकीकृत करना चाहता हूं। मैं सोच रहा था कि एक खाली पैरामीटर सूची के साथ जावा विधि को एनोटेट करने का कोई तरीका है ताकि स्कैला इसे पैरामीटर के रूप में पहचान सके।

उदाहरण

class Foo { 
    @ParameterLess 
    public String[] bar() { return someArray; } 
} 

के लिए इतना है कि स्काला में मैं कर सकते हैं:

val f = new Foo 
f bar (0) 

संकलक बार के बारे में शिकायत करने के लिए() होने एक खाली तर्क सूची बिना?

वैकल्पिक रूप से, जावा से स्कैला-स्टाइल गेटर्स और सेटर को परिभाषित करने का कोई तरीका है?

नोट: निश्चित रूप से मुझे पता है कि इस विशिष्ट उदाहरण में मैं यह शायद मेरा सवाल का जवाब

public String bar(int i) { return someArray[i]; } 
+0

क्या आपने बार (ऑब्जेक्ट ... ओएस) के साथ प्रयास किया है? – Luciano

+1

आपको अपने उदाहरण में 'f bar() (0) 'को कॉल करने की आवश्यकता है ताकि संकलक पैरामीटर और सरणी अनुक्रमणिका के बीच अंतर कर सके। – aishwarya

+0

बेशक। मैं सोच रहा था कि क्या स्कैला को संकेत देने का कोई तरीका था कि 'बार()' को 'बार' के रूप में कार्य करना चाहिए –

उत्तर

1

को परिभाषित करते हुए समस्या वैकल्पिक हल कर सकते हैं:

Scala getters and setters in Java class

जवाब आप कर सकते हैं वह यह है कि टी, जब तक कि आप लक्षणों से जुड़े कुछ चालबाजी का सहारा लेते हैं। खैर, मुझे लगता है कि किसी प्रकार की एनोटेशन à la @scala.reflect.BeanProperty एक उपयोगी सुधार होगा।