मैं बंद समझता हूं और कुछ भाषा जैसे पायथन और एसएमएल में लागू होता हूं। फिर भी, जब मैं जावा में बंद होने के बारे में विकिपीडिया पढ़ता हूं (बेशक, केवल 8 संस्करण), यदि जावा बंद होने का समर्थन करता है या नहीं तो मुझे अंतर नहीं लगता है।जावा: इस कोड में क्लोजर को समझाएं
उन कोड विकिपीडिया से मैं कॉपी: Closure
बंद के बिना जावा कोड:
class CalculationWindow extends JFrame {
private volatile int result;
...
public void calculateInSeparateThread(final URI uri) {
// The expression "new Runnable() { ... }" is an anonymous class implementing the 'Runnable' interface.
new Thread(
new Runnable() {
void run() {
// It can read final local variables:
calculate(uri);
// It can access private fields of the enclosing class:
result = result + 10;
}
}
).start();
}
}
और अगर जावा बंद का समर्थन करता है, कोड इच्छा की तरह दिखता है:
class CalculationWindow extends JFrame {
private volatile int result;
...
public void calculateInSeparateThread(final URI uri) {
// the code() -> { /* code */ } is a closure
new Thread(() -> {
calculate(uri);
result = result + 10;
}).start();
}
}
तो, मेरा सवाल है: यदि जावा बंद करने का समर्थन करता है, तो दूसरी कोड में कौन सी विशेष बात है? मैं वास्तव में दो कोड के बीच मुख्य अंतर नहीं देखता हूं।
कृपया मुझे यह बिंदु बताएं।
धन्यवाद :)
यह अभी भी एक अज्ञात वर्ग का एक उदाहरण है। और नहीं, यह अधिक शक्तिशाली नहीं है। – newacct