通过reflection向类添加新方法

是否可以通过java中的reflection向类中添加方法?

public class BaseDomain { public BaseDomain(){ Field[] fields = this.getClass().getDeclaredFields(); for(int i=0; i<fields.length; i++){ String field = fields[i].toString(); String setterMethod = "public void set" + field.toLowerCase(); //Now I want to add this method to this class. } } } 

不,不是通过反思。

反思询问类及其成员,您可以更改字段但不能创建新字段。 您无法添加新方法。

您可以使用字节码操作库向类添加方法; 但你为什么要这样?

除了通过reflection之外,你无法调用这些方法,因为它们在编译时显然不存在。

也许看看项目Lombok – 这是一个注释预处理器,可以在编译时向类添加方法。 只要您的类被正确注释,它就会自动添加getter和setter。

不可以。您无法通过reflection添加方法。 在这种情况下,我将使用像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 

现在,示例动态对象将如下所示

 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