नहीं। आप प्रतिबिंब के माध्यम से तरीकों को जोड़ नहीं सकते हैं। इस मामले में, मैं Beanshell 2 जैसे स्क्रिप्टिंग भाषा का उपयोग करूंगा। यहाँ एक DynamicObject वर्ग
public class DynamicObject
{
bsh.Interpreter interpreter = null;
public DynamicObject()
{
interpreter = new bsh.Interpreter();
}
public void addToSource(String... method)
{
try
{
String main = "";
for (int i=0; i<lines.length; i++){
main += lines[i] + "\n";
}
interpreter.eval(main);
}
catch (Exception e)
{
e.printStackTrace();
}
}
public Object invoke(String methodname, Object... args)
{
try
{
return interpreter.getNameSpace().invokeMethod(methodname, args, bsh);
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
public Object invoke(String methodname)
{
return invoke(methodname, (Object[])null);
}
}
अब एक उदाहरण गतिशील वस्तु की तरह
DynamicObject testObj = new DynamicObject();
testObj.addToSource(
"public int add (int a, int b)",
"{",
"return a+b;",
"}"
);
int added = testObj.invoke("add", 5, 4); // is 9
स्रोत
2013-05-10 15:37:52
http://stackoverflow.com/questions/6680674/can-a-java-class-add-a-method दिखाई देंगी -to-yourself-at-runtime –
* वास्तविक समस्या * क्या है जिसे आप हल करने का प्रयास कर रहे हैं। इसे लागू करने के लिए शायद एक आसान तरीका है। – parsifal
यह वही है जो मैं चाहता हूं ..... http: //stackoverflow.com/questions/16482686/adding-getters-setters-to-one-base-class –