2016-12-30 10 views
6

क्या होगा ग्रूवी में जावा 8 :: (double colon operator) के बराबर?जावा 8 की ग्रूवी बराबर :: (डबल कोलन) ऑपरेटर

मैं ग्रूवी https://github.com/bytefish/PgBulkInsert

में इस उदाहरण लेकिन मानचित्रण भाग अनुवाद करने के लिए जावा 8 के रूप में एक ही तरह से काम नहीं करता है कोशिश कर रहा हूँ:

public PersonBulkInserter() { 
    super("sample", "unit_test"); 

    mapString("first_name", Person::getFirstName); 
    mapString("last_name", Person::getLastName); 
    mapDate("birth_date", Person::getBirthDate); 
} 
+2

ग्रूवी विधि सूचक ऑपरेटर 'लगता है। और' करीब है लेकिन घोषित वर्ग का एक उदाहरण की उम्मीद है। – manouti

+0

दरअसल, मुझे ग्रोवी कक्षा के लिए "कार्यात्मक इंटरफ़ेस" की आवश्यकता होगी। https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html – Wavyx

+3

अपने 'mapString()' और 'mapDate() के कोड को देखे बिना बताना मुश्किल है 'विधियों, लेकिन शायद ऐसा कुछ काम करेगा:' मैपस्ट्रिंग ("first_name", {it.firstName} फ़ंक्शन के रूप में) '। यह जावा 8 में फ़ंक्शन-पॉइंटर-टू-लैम्ब्डा-टू-फ़ंक्शनल-इंटरफ़ेस नोटेशन के रूप में उतना कुशल नहीं है, लेकिन मुझे लगता है कि यह वही काम करेगा। – BalRog

उत्तर

6

ग्रूवी वास्तव में उदाहरण-तलाक नहीं है उदाहरण-विधि संदर्भ (संपादित करें:। फिर भी इस जवाब पर Wavyx की टिप्पणी देखें।) है, तो इसके बजाय आप बंद के साथ नकली यह करने के लिए है। जावा 8 में उदाहरण-विधि संदर्भ सिंटैक्स का उपयोग करते हैं, तो आप वास्तव में एक लैम्ब्डा कि इसके पहले (इस मामले में, केवल) तर्क के रूप में लागू उदाहरण उम्मीद के बराबर की स्थापना कर रहे हैं।

इस प्रकार, ग्रूवी में हम एक बंद लागू उदाहरण के रूप में डिफ़ॉल्ट it तर्क का उपयोग करता है बनाने के लिए एक ही प्रभाव प्राप्त करने के लिए। इस तरह:

PersonBulkInserter() { 
    super("sample", "unit_test") 

    mapString("first_name", { it.firstName } as Function) 
    mapString("last_name", { it.lastName } as Function) 
    mapDate("birth_date", { it.birthDate } as Function) 
} 

सूचना ग्रूवी संपत्ति अंकन के उपयोग के यहाँ, और mapString() या mapDate() विधि द्वारा की उम्मीद @FunctionalInterface प्रकार के Closure कास्ट करने के लिए है कि यह आवश्यक है।

+4

जावा 8 :: (डबल कोलन) 2017 https://twitter.com/glaforge/status/814890698369593348 – Wavyx

+0

में जोड़ दिया जाएगा इस जारी किया गया हो गए थे? –

+0

कोई विचार नहीं। आप अपडेट के लिए "ग्लैफॉर्ज" ट्वीट करने का प्रयास कर सकते हैं (वेविक्स की टिप्पणी में लिंक देखें)। मैंने सुना है कि वह बहुत संवेदनशील है। – BalRog

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