मुझे लगा कि अनाम कक्षाएं मूल रूप से लंबोदर की तरह थीं, लेकिन बदतर वाक्यविन्यास के साथ ... यह सच हो जाता है, लेकिन वाक्यविन्यास और भी बदतर है और स्थानीय चर (युक्तियां) होने का कारण बनता है।
आप मूल वर्ग के क्षेत्रों में बनाकर कोई भी अंतिम चर एक्सेस नहीं कर सकते।
उदाहरण के लिए
इंटरफेस:
public interface TextProcessor
{
public String Process(String text);
}
वर्ग:
private String _key;
public String toJson()
{
TextProcessor textProcessor = new TextProcessor() {
@Override
public String Process(String text)
{
return _key + ":" + text;
}
};
JSONTypeProcessor typeProcessor = new JSONTypeProcessor(textProcessor);
foreach(String key : keys)
{
_key = key;
typeProcessor.doStuffThatUsesLambda();
}
मुझे नहीं पता कि उन्होंने इसे java 8 में छांटा है (मैं EE दुनिया में फंस गया हूं और अभी तक 8 नहीं मिला) लेकिन C # में यह इस तरह दिखेगा:
public string ToJson()
{
string key = null;
var typeProcessor = new JSONTypeProcessor(text => key + ":" + text);
foreach (var theKey in keys)
{
key = theKey;
typeProcessor.doStuffThatUsesLambda();
}
}
आपको c # में एक अलग इंटरफ़ेस की आवश्यकता नहीं है ... मुझे यह याद है! मैं अपने आप को जावा में बदतर डिजाइन बना रहा हूं और अपने आप को और अधिक दोहरा रहा हूं क्योंकि कोड + जटिलता के लिए आपको कुछ पुन: उपयोग करने के लिए जावा में जोड़ना पड़ता है, बस कॉपी और पेस्ट करने से भी बदतर होता है।
final
स्थानीय चर को एन्क्लोजिंग विधि से संदर्भित कर सकते हैं ।