मैं एक सामान्य लैम्ब्डा एक विधि को लागू है और यह एक अतिरिक्त लाभ के रूप में toString है फिर से परिभाषित करने नहीं करना चाहती। मैं चाहता हूं कि लैम्ब्डा अभिव्यक्ति केवल टूस्ट्रिंग विधि को लागू करे। मुझे पता है कि मैं इसे बहुत अच्छी तरह से व्यक्त नहीं कर रहा हूं लेकिन मुझे यकीन है कि आप मुझे इस उदाहरण के साथ समझेंगे।लैम्बडा अभिव्यक्ति को जावा 8 में स्ट्रिंग को परिभाषित करने के लिए कैसे करें?
public class LambdaToStringTest {
public interface ToStringInterface {
public abstract String toString();
}
public static void main(String[] args) {
print("TRACE: %s", (ToStringInterface)()->someComputation()); // <<-- ERROR: The target type of this expression must be a functional interface
}
private static void print(String format, Object... args) {
System.out.println(String.format(format, args));
}
}
यह कम्पाइल अगर मैं विधि का नाम बदलने, लेकिन फिर यह toString पर हावी नहीं होता तो प्रिंट विधि मुद्रित नहीं होगा क्या उम्मीद है।
यह एक लॉग उपप्रणाली को परिभाषित करने का प्रयास है जो केवल आवश्यक होने पर लैम्बडा का मूल्यांकन करता है (जब यह वास्तव में मुद्रित होने जा रहा है) लेकिन गैर-लैम्ब्डा तर्कों के अनुकूल है। मैं इसे प्राप्त करने के लिए अन्य तरीकों से जानते हैं, लेकिन मुझे आश्चर्य है कि क्यों मैं इसे इस तरह से नहीं कर सकते और अगर वहाँ एक समाधान नहीं है या मैंने कुछ गलत,
मैं यह नहीं पूछ रहा हूँ: http://stackoverflow.com/questions/16544583/can-i-override-tostring- विधि-का-कार्यात्मक-इंटरफेस-इन-जेडीके 8-प्रयोग-लैम्बडास मैं केवल स्ट्रिंग को लागू करना चाहता हूं। – aalku