यह सादा जावा में प्रोग्राम के रूप में कार्यावधि में एक वर्ग की एक विधि ओवरराइड करने के लिए संभव है (या यहां तक कि एक नई विधि बनाने)?जावा प्रतिबिंब: मैं रनटाइम पर तरीकों को ओवरराइड या जेनरेट कैसे करूं?
मैं ऐसा करने में सक्षम होना चाहता हूं भले ही मैं संकलन समय पर कक्षाओं को जानता हूं।
क्या मैं कार्यावधि में अधिभावी द्वारा वास्तव में मतलब है:
abstract class MyClass{
public void myMethod();
}
class Overrider extends MyClass{
@Override
public void myMethod(){}
}
class Injector{
public static void myMethod(){ // STATIC !!!
// do actual stuff
}
}
// some magic code goes here
Overrider altered = doMagic(
MyClass.class, Overrider.class, Injector.class);
अब, यह मंगलाचरण ...
altered.myMethod();
... Injector.myMethod()के बजाय Overrider कहेंगे .myMethod()। क्योंकि "जादू" करने के बाद यह अलग वर्ग उदाहरण (यह Overrider है), (ताकि हम इसे स्थानीय क्षेत्रों तक पहुंचने से रोकने) से शुरू हो जाती है
Injector.myMethod(), स्थिर है।
पर एक नज़र डालें क्या आप हमें बता सकते हैं कि आप किस प्रकार की वस्तुओं को ओवरराइड करना चाहते हैं? दूसरी नज़र में आपकी समस्या मुझे निर्भरता-इंजेक्शन प्रतिमान के उद्देश्य की याद दिलाती है। – akarnokd