2011-01-23 15 views
10

मैं हाल ही में सी # से जावा [फिर से] में स्थानांतरित हो गया। लेकिन मैं लम्बा अभिव्यक्तियों और आईएनमेर्यूरेबल जैसी चीज़ों को बुरी तरह याद करता हूं। सी # के लिए। तो मैं जावा में लैम्ब्डा अभिव्यक्ति लाइब्रेरी की तलाश में हूं।जावा में .NET की Lambda अभिव्यक्ति

LambdaJ से बेहतर पुस्तकालय हैं?

जावा प्रोग्राम में सीधे क्लोजर भी अटूट है? क्या मैं जावा कार्यों में क्लोजर कोड मिश्रण कर सकता हूं?

+0

दिलचस्प ... सी # 'IENumerable.Foreach' – Gabe

+2

@Gabe के साथ भी शिप नहीं करता है - आप पैडेंटिक पॉइंट के बारे में सही हैं। मेरा मतलब संग्रह हैंडलिंग विधियां जो कार्रवाई करती हैं। सूची .Foreach/Array.Foreach या Ienumerable । सभी आदि – Fakrudeen

उत्तर

13

Java 8 में लैम्ब्डा समर्थन मूल रूप से हो सकता है। तब तक आप google-guava जैसे अनाम आंतरिक कक्षाओं और पुस्तकालयों के संयोजन का उपयोग कर सकते हैं। नीचे अन्य पुस्तकालयों कि आप कम से Scala

+0

मुझे एक चीज़ नहीं मिलती है, माइक्रोसॉफ्ट द्वारा लैम्ब्डा अभिव्यक्ति पेटेंट की जाती है। जावा इसका उपयोग करने का मौका क्या है? – hardywang

+1

जब मैंने इसे पढ़ा तो मैं हँसे - फिर पाया: http://www.google.com/patents/US20070044083 ... सी # लैम्बडा अभिव्यक्तियों के लिए पहली भाषा के करीब नहीं है। पेटेंट उन मूर्खों में से एक होना चाहिए "मैं इस बात को करने के लिए मुकदमा नहीं करना चाहता हूं कि हर किसी ने" पेटेंट का इस्तेमाल किया है। – Dale

3

जावा में बराबर foreach पाश इस

List<Foo> fooList = // some list containing foos 
for (Foo foo : fooList){ 
    // do stuff 
} 

की तरह संरचित है जावा में कोई लैम्ब्डा भाव हैं, तथापि यदि आप Java8 जब तक वे बंद जोड़ रहे हैं इंतजार कर सकते हैं। निकटतम आप anonymous inner classes प्राप्त कर सकते हैं।

+0

धन्यवाद - लेकिन मेरा मतलब सी # के foreach कीवर्ड के बराबर नहीं था। मेरा मतलब कुछ कोलेक्शन। फॉरएच (बंद)। हालांकि उत्तर का बाद का हिस्सा उपयोगी है, हालांकि ए। आंतरिक कक्षाएं वर्बोज़ हैं। – Fakrudeen

3

गूगल अमरूद पुस्तकालयशामिल

या बेहतर नज़र पर गौर कर सकते हैंऔर Predicate कक्षाएं जिन्हें लैम्ब्डा जैसी कार्यक्षमता अनुकरण करने के लिए उपयोग किया जा सकता है। जैसा कि ऊपर काग्रेड उल्लेख करता है, आप प्रत्येक के अज्ञात उदाहरण बना सकते हैं। http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Iterables.html

:

http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/base/Function.html
http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/base/Predicate.html

यद्यपि आप आसानी से इस तरह की कक्षाएं अपने आप को लिख सकता है, अमरूद सहायक तरीकों कि बदलने या iterables के सभी विभिन्न प्रकार को छानने की तरह काम करने के लिए कार्य करता है और विधेय उपयोग की एक बहुत कुछ शामिल

नोट: मुझे एहसास है कि पेंगा ने पहले से ही Google Guava के लिए एक लिंक पोस्ट किया है, लेकिन मैंने पहले ही इस पोस्ट को लिखना शुरू कर दिया था और सोचा था कि यह लिंक प्रदान करने के लिए अभी भी उपयोगी होगा।

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