中易网

java动态生成方法

答案:2  悬赏:10  
解决时间 2021-01-13 11:06
java动态生成方法
最佳答案
动态生成方法只能用反射,示例代码如下:
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.将你这段字符串输出到一个文件里,用Java类文件的方式命名。 2.调用外部javac命令将该文件编译。 3.用类加载器(ClassLoad)动态加载新的class文件并用Class.forName()注册该类,然后就可以正常使用了。 上面的每一步都能在baidu中找到实现方法,自己发挥吧。
求采纳
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
全球生活成本最贵城市是哪里?
与加冖是什么字
If it were not for the sun 中的for有什么含
圣源小区停车场(出入口)地址在哪,我要去那里
(x-2)(x-3)=12这道题怎么用分解因式法解
佳音琴行(中卫中宁县)地址在什么地方,我要处
B保养,怎么保养内容那么少
南安哪里比较好玩景点
studioone3怎么彻底卸载
我在抹着百玫生看着镜子前的自己,很多男生都
小米酥做法全部过程
烽火战国怎么解除新手保护期
中国邮政储蓄银行(望奎县南奋斗路支行)地址有
请问所谓的“台湾高仿”的是什么货??质量如
诛仙手游飞升天音万象生佛流双天书怎么加点
推荐资讯
东风天龙紫罗兰配件怎么去啊,有事要去办理
华为荣耀v9刚开机还剩几g运行内存
求小叶全集
鸿蒙天尊宠物怎么获得 宠物系统介绍
1966年数马的在2016年供虚空藏菩萨的方位吗
有没有重庆的朋友看到一辆保时捷车牌渝B77777
百基拉岔河店地址在哪,我要去那里办事
有到河北衡水市武邑县的火车吗
什么叫带形窗
网上游 戏厅下载信用度怎样?
惠威M10与惠威 D1010MKII 08款听音乐哪个好
(1-2的平方分之1)(1-3的平方分之1)...(1
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?