दुर्भाग्य से कार्यात्मक प्रोग्रामिंग का सभी प्रयास जावा में इसे करने के लिए वर्बोज़ और/या अजीब का कुछ हिस्सा होगा।
सबसे प्रत्यक्ष तरह से (जैसे this one form Guava के रूप में) एक Function
इंटरफेस प्रदान और तरीकों कि लेने के सभी प्रकार प्रदान करते हैं और इसे कहते हैं (जैसे Collections#transfrom()
जो करता है कि मैं क्या लगता है कि आपके map()
विधि करना चाहिए) के लिए है। ऐसा नहीं है कि जावा की योजना बनाई लैम्ब्डा फ़ीचर ध्यान दिया जाना चाहिए
Collection<OutputType> result = Collections.transform(input, new Function<InputType,OutputType>() {
public OutputType apply(InputType input) {
return frobnicate(input);
}
});
:
के बारे में बुरी बात यह है कि आप Function
लागू करने की आवश्यकता है और अक्सर एक अनाम भीतरी वर्ग है, जो एक बहुत वर्बोज़ वाक्य रचना है के साथ ऐसा है 8 यह काफी आसान बना देगा (और संभवतः तेज़ भी!)। में बराबर कोड lambdas (की वर्तमान फार्म) इस प्रकार दिखाई देगा:
Collection<OutputType> result = Collections.transform(input, SomeClass::frobnicate);
या अधिक वर्बोज़, लेकिन अधिक लचीला:
Collection<OutputType> result = Collections.transform(input, in -> frobnicate(in));
स्रोत
2011-05-11 09:37:39