जावा में जादू विधियों का उपयोग करने का कोई तरीका है जैसे PHP में __call
है?जावा में जादुई रूप से कॉल विधियां
उदाहरण के लिए:
class foo {
@Setter @Getter
int id;
@Getter
Map <String, ClassInFoo> myMap;
protected class ClassInFoo {
@Setter @Getter
String name;
}
@Setter
String defaultKey;
}
मैं मनुष्य और सेटर तरीके के लिए Project Lombok एनोटेशन उपयोग कर रहा हूँ कोड सरल करने के लिए।
मान लें कि मेरे मानचित्र में स्ट्रिंग द्वारा मैप किए गए कई आइटम हैं और डिफ़ॉल्ट के डिफ़ॉल्ट डिफ़ॉल्ट को परिभाषित करता है।
मुझे क्या चाहिए foo.getName()
पर कॉल करने में सक्षम होना है जो डिफ़ॉल्ट नाम को foo.myMap.get(defaultKey).getName()
के रूप में वापस कर देगा।
कारण मैं मैन्युअल रूप से सभी गेटर्स लिख नहीं सकता हूं कि वास्तव में फू क्लास जेनेरिक के साथ विरासत में है और आंतरिक वर्ग अलग हो सकता है।
मैं इन सबसे छुटकारा जरूरत है की तरह कुछ:
function Object __call(method) {
if (exist_method(this.method)
return this.method();
else
return this.myMap.get(defaultKey).method();
}
इस किसी भी तरह जावा में संभव है?
संपादित करें: https://gist.github.com/1864457
ऐसा करने का एकमात्र कारण के लिए "आशुलिपि" आंतरिक कक्षा में तरीकों है:
मैं मैं क्या यहाँ प्राप्त करने के लिए कोशिश कर रहा हूँ की एक और अधिक सटीक उदाहरण दिया।
एक दिलचस्प सवाल के रूप में उपवास, लेकिन इसे ओओपी टैग नहीं किया जाना चाहिए। जिस विशेषता में आप रुचि रखते हैं वह ऑब्जेक्ट उन्मुख नहीं है और वास्तव में भी गतिशील नहीं है। – Perception
आम तौर पर आप अपने खुद के गेटटर और सेटर्स चाहते हैं जिन्हें आप अपने आईडीई के साथ उत्पन्न कर सकते हैं। उदाहरण के लिए, गेटटर को एक परिवर्तनीय संग्रह वापस करने का अच्छा विचार नहीं है। इसके बजाय आप 'क्लासइनफू getMyMap (स्ट्रिंग नाम) ' –
हाँ अच्छी तरह से, मैं सभी गेटर्स लिख सकता हूं, लेकिन मुझे यह डुप्लिकेट और बदसूरत मिला। मुझे यह पसंद आएगा ताकि मेरे एचटीएमएल कोडिंग लोग इन विधियों का अनुरोध कर सकें। –