जावा पर, क्या आप reflection
का उपयोग करके बनाए गए वर्ग में विधियों को ओवरराइड करना संभव है?जब मैं प्रतिबिंब के माध्यम से ऑब्जेक्ट बनाता हूं तो मैं जावा में विधियों को ओवरराइड कैसे कर सकता हूं?
public class MyObject
{
public String foo, bar;
public MyObject(String foo)
{
this.foo = foo;
this.bar = foo + "bar";
}
public void setBar(String bar)
{
this.bar = bar;
}
}
और एक कक्षा में मैं इस प्रकार यह सीधे बना सकते हैं और अपने setBar
विधि ओवरराइड करना चाहते:
MyObject obj = new MyObject("something")
{
@Override
public void setBar(String bar)
{
this.bar = this.foo;
}
};
वहाँ एक विधि ओवरराइड करने के लिए एक रास्ता है उदाहरण के लिए, मैं निम्नलिखित वर्ग है कहना प्रतिबिंब का उपयोग कर इसी तरह से? शायद ऐसा कुछ? :
Class<?> _class = Class.forName("com.example.MyObject");
Constructor<?> _constructor = _class.getConstructor(new Class<?>[]{String.class});
Method m = _class.getMethod("setBar", new Class<?>[]{String.class});
Object obj = _constructor.newInstance("Foo String")
{
m = new Method(new Class<?>[]{String.class})
{
System.out.println("Foobar");
}
};
यदि नहीं, तो ऐसा करने के अन्य तरीके हैं, या बाहरी पुस्तकालय जो मदद कर सकता है? मैं बाध्य मूल्यों को बदलने के लिए श्रोताओं को एक सेटर विधि में जोड़ने का तरीका ढूंढ रहा हूं।
आपको गतिशील कोड जनरेशन लाइब्रेरी की आवश्यकता है, जैसे * javassist *। –