के साथ फ़ंक्शन तर्कों की चर लंबाई को स्वीकार करे मान लीजिए मेरे पास एक स्ट्रिंग है: String s = "1,2,3,4,5,6"
। मैं एक विधि combineFunctions()
बनाना चाहता हूं जो एक तर्क के रूप में Function
एस का परिवर्तनीय लंबाई अनुक्रम लेगा और उस क्रम में सभी परिचालनों को लागू करेगा।एक ऐसी विधि बनाएं जो संभवतः विभिन्न प्रकार
कार्यों में <T,U>
प्रकार भिन्न हो सकते हैं।
उदाहरण इस तरह के एक समारोह के उपयोग करता होगा निम्नलिखित:
Combine<String> c = new Combine<>(s);
List<String> numbers = c.combineFunctions(splitByComma);
Integer max = c.combineFunctions(splitByComma,convertToInt, findMax);
मैं क्या कोशिश की है (यहाँ <U>
की ज्यादा का उपयोग नहीं है):
public <U> void combineFunctions(
Function<? extends Object, ? extends Object>... functions) {
}
लेकिन मैं पर अटक कर रहा हूँ Function
एस के अंतिम में से एक का प्रकार प्राप्त करना। मैं एक पुनरावर्ती दृष्टिकोण के बारे में भी सोच रहा था लेकिन varargs पैरामीटर अंतिम होना चाहिए।
जावा में ऐसी विधि को लागू करना संभव होगा?
इसका मतलब क्या है "लेकिन मैं कार्यों में से किसी एक को प्राप्त करने में फंस गया हूं।" क्या आप समझा सकते हैं? –
यह 'स्ट्रीम' और' मानचित्र 'विधि जैसा दिखता है। – gontard
यदि आप जानते हैं कि इसे हमेशा अपेक्षाकृत कम संख्या में तर्क (10 कार्यों से कम कहें) के साथ बुलाया जाएगा, तो आप 10 ओवरलोडेड 'गठबंधन (फ़ंक्शन फ़ंक्शन , ..., फ़ंक्शन ) लिख सकते हैं। विभिन्न (लेकिन सीमित) तर्कों को स्वीकार करते समय यह प्रकार सुरक्षा को बनाए रखने का एक मानक तरीका है। –
assylias