中易网

java动态生成方法

答案:2  悬赏:10  
解决时间 2021-01-13 11:06
  • 提问者网友:轮囘Li巡影
  • 2021-01-13 03:37
java动态生成方法
最佳答案
  • 二级知识专家网友:第幾種人
  • 2021-01-13 04:35
动态生成方法只能用反射,示例代码如下:
public Object invokeMethod(T obj,String methodName, Object[] args){
Object object = null;
@SuppressWarnings("rawtypes")
Class ownerClass = obj.getClass();
@SuppressWarnings("rawtypes")
Class[] argsClass = new Class[args.length];
for(int i = 0, j = args.length; i < j; i++) {
argsClass[i] = args[i].getClass();
}
Method method;
try {
methodName = "get" + methodName;
method = ownerClass.getMethod(methodName, argsClass);
object = method.invoke(obj, args);
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
}
return object;
}

假如有一个对象A,里面有方法A getAbc(Object...obj),首先把方法的参数放入数组中,Object[] args,这样调用invokeMethod(A,Abc,args),这个的返回值就是getAbc的返回值。
全部回答
  • 1楼网友:行路难
  • 2021-01-13 05:19
可以的,我说说大概思路,很简单,你自己具体实现吧,把代码写给你没意义的: 1.将你这段字符串输出到一个文件里,用Java类文件的方式命名。 2.调用外部javac命令将该文件编译。 3.用类加载器(ClassLoad)动态加载新的class文件并用Class.forName()注册该类,然后就可以正常使用了。 上面的每一步都能在baidu中找到实现方法,自己发挥吧。
求采纳
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息