2010-07-14 13 views
11

वहाँ किसी भी मानक सामान्य "कॉलबैक" या "समारोह/विधि" जावा में प्रकार, System.Action<T> या System.Func<T,U> .NET में की तरह कर रहे हैं?जावा बराबर, आदि

मेरे ठोस मामले में, मुझे एक ऐसी कक्षा की आवश्यकता है जो एक विधि को लपेटता है जो T प्रकार का एक (सामान्य) पैरामीटर लेता है और कुछ भी नहीं देता (यानी void)।

हां, मेरे लिए इस तरह के एक वर्ग/इंटरफेस बनाने के लिए काफी आसान है, लेकिन यदि कोई है तो मैं एक मानक पुस्तकालय वर्ग पसंद करूंगा।

उत्तर

12

मुझे विश्वास नहीं है कि इस तरह की मानक पुस्तकालय में कुछ भी नहीं है, नहीं (लेखन के समय, 2010)। अन्य पुस्तकालयों में उन्हें - गिइस के Provider<T> और गुवा के Function<F, T>, Supplier<T> और Predicate<T> जैसी चीजें हैं ... इसलिए यदि आप पहले से ही पुस्तकालयों का उपयोग कर रहे हैं, तो आप इस दिशा में जो कुछ भी प्रदान करते हैं, उसे देखना चाहेंगे।

(संपादित करें:। के रूप में बताया गया है, उन इंटरफेस जो चीजों को वापस कर रहे हैं - तो Func<T, U> लेकिन Action<T> के समान नहीं के समान)

+0

इनमें से कोई भी समकक्ष कैसे होगा? आपके द्वारा सुझाए गए प्रत्येक आइटम से मूल्य वापस करने की उम्मीद है। मेरा [संबंधित प्रश्न] देखें (http://stackoverflow.com/q/9007008/403455)। –

+0

@glenviewjeff: वे 'एक्शन ' के समान नहीं हैं, लेकिन वे 'Func 'के समान हैं। –

+0

@glenviewjeff: यदि आप वापसी की आवश्यकता नहीं है तो आप हमेशा [java.lang.Void] (http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html) का उपयोग कर सकते हैं मूल्य। एक "मानकीकृत" 'Func 'कुछ भी नहीं, इमो से बेहतर है। –

2

जावा मानक पुस्तकालय में इस तरह के किसी भी कक्षा प्रदान नहीं करता है।

आप Functional Java लाइब्रेरी का उपयोग कर सकते हैं जो fj.F1<T, fj.Unit> प्रदान करता है जो मूल रूप से System.Action<T> के .NET से समतुल्य है।

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