समारोह अमूर्त:जावा जेनरिक: कार्यात्मक की तरह अधिकतम()
public abstract class Function<X, Y> {
abstract Y apply(X x);
}
max
विधि कार्यान्वयन
public static <V extends Comparable<V>> Function<List<V>, V> max() {
return new Function<List<V>, V>() {
@Override
public V apply(List<V> list) {
return Collections.max(list);
}
};
}
और उपयोग (यह की तरह दिखना चाहिए कैसे)
Date result = max().apply(datesList);
लेकिन मैं यह त्रुटि प्राप्त करें और समझ में नहीं आता कि इसे Object
incompatible types; inferred type argument(s) java.lang.Object do not conform to bounds of type variable(s) V
found : <V>project.Function<java.util.List<V>,V>
required: java.lang.Object
मैंने बड़ी मात्रा में समान क्यूए पढ़ा है लेकिन इसे ठीक करने के तरीके को नहीं मिला है। धन्यवाद।
FYI करें , आपका 'फंक्शन' प्रकार एक [इंटरफ़ेस] (http://docs.oracle.com/javase/tutorial/java/concepts/interface.html) का उपयोग करने के लिए एक अच्छी जगह जैसा दिखता है। – Taymon
मैं तैयमन से सहमत हूं, मैं इसे एक अमूर्त वर्ग के बजाय एक इंटरफेस बनाउंगा। ध्यान दें कि [Google Guava] (http://code.google.com/p/guava-libraries/) में पहले से ही 'फ़ंक्शन' इंटरफ़ेस है जो बिल्कुल वही है। – Jesper
@Taymon सुझाव के लिए धन्यवाद, लेकिन असल में मेरे पास इस वर्ग में और अधिक तरीके हैं। उदाहरण के लिए: सार्वजनिक समारोह तो (फंक्शन सेकंड) {...} –