java动态生成方法

如果我有个配置文件里写了a,b两个字母,读出来动态生成方法privatestaticvoidprint(){System.out.println("a");System.... 如果我有个配置文件里写了a,b两个字母,读出来动态生成方法private static void print(){ System.out.println("a"); System.out.println("b"); } 等下次运行,配置文件改成a,c,d需要重新生成方法private static void print(){ System.out.println("a"); System.out.println("c"); System.out.println("d"); } 该怎么实现啊。。。。 展开
 我来答
亮亮57qb瞙
推荐于2017-12-15 · 超过67用户采纳过TA的回答
知道答主
回答量:126
采纳率:0%
帮助的人:148万
展开全部
可以的,我说说大概思路,很简单,你自己具体实现吧,把代码写给你没意义的: 1.将你这段字符串输出到一个文件里,用Java类文件的方式命名。 2.调用外部javac命令将该文件编译。 3.用类加载器(ClassLoad)动态加载新的class文件并用Class.forName()注册该类,然后就可以正常使用了。 上面的每一步都能在baidu中找到实现方法,自己发挥吧。

求采纳
pieryon
推荐于2016-11-01 · 知道合伙人数码行家
pieryon
知道合伙人数码行家
采纳数:14410 获赞数:166868
获取软件设计师高级职称 万达金融最佳创新奖

向TA提问 私信TA
展开全部
动态生成方法只能用反射,示例代码如下:
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的返回值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式