चाहे आप विधि संदर्भ, लैम्ब्डा अभिव्यक्तियों या सामान्य विधि कॉल का उपयोग करते हों, भले ही एक आवृत्ति विधि को आमंत्रण के लिए एक उचित उदाहरण की आवश्यकता हो। उदाहरण समारोह आमंत्रण द्वारा प्रदान किया जा सकता है, उदा। अगर forEach
की उम्मीद है BiConsumer<Chapter3,String>
यह काम किया। लेकिन चूंकि forEach
आपके मामले में Consumer<String>
की अपेक्षा करता है, तो Chapter3
का कोई उदाहरण नहीं है। आप या तो द्वारा आसानी से इसे ठीक कर सकते हैं, एक static
विधि करने के लिए या विधि मंगलाचरण के लिए लक्ष्य के रूप में एक उदाहरण प्रदान करके Chapter3.print
बदल रहा:
public class Chapter3 {
public void print(String s) {
System.out.println(s);
}
public static void main(String[] args) {
Arrays.asList("a", "b", "c").forEach(new Chapter3()::print);
}
}
यहाँ, new Chapter3()
, Chapter3
का एक नया उदाहरण का परिणाम है, के लिए लिया जाएगा विधि print
विधि और Consumer<String>
उस विधि पर विधि का आविष्कार करने का तरीका बनाया जा सकता है।
एक पंक्ति का जवाब यह है: दायरे में अध्याय 3 का कोई उदाहरण नहीं है ..... धन्यवाद आपने मेरे संदेहों को मंजूरी दे दी है। –