2016-07-16 6 views
8

Java8 से Function.class में, हमने:Function.class में निचले बाउंड वाले वाइल्डकार्ड का उद्देश्य क्या है?

default <V> Function<V, R> compose(Function<? super V, ? extends T> before) { 
    Objects.requireNonNull(before); 
    return (V v) -> apply(before.apply(v)); 
} 

लिखें स्वीकार करता है:

Function<? super V, ? extends T> before 

के बजाय:

Function<V, ? extends T> before 

वहाँ किसी भी प्रशंसनीय स्थिति है जो वास्तव में है कि " वी "कम बाध्य मामलों है?

+2

फ़ंक्शन इंटरफ़ेस उन मामलों में उपयोग करता है जहां आप कुछ कोड को एक विधि में encapsulate करना चाहते हैं जो इनपुट पैरामीटर के रूप में कुछ मान स्वीकार करता है और फिर इनपुट पर आवश्यक संचालन करने के बाद एक और मान देता है। * इनपुट पैरामीटर प्रकार और विधि का रिटर्न प्रकार या तो समान या अलग हो सकता है * जो समझ में आता है – emotionlessbananas

उत्तर

5

? super तर्क इनपुट प्रकार से भिन्न होने के लिए Function के इनपुट प्रकार (V) को वापस करने की अनुमति देता है।

उदाहरण के लिए, यह ? super संस्करण के साथ संकलित करता है लेकिन वैकल्पिक नहीं है।

Function<Object, String> before = Object::toString; 
Function<String, Integer> after = Integer::parseInt; 
Function<Integer, Integer> composed = after.compose(before); 
संबंधित मुद्दे