如何实现java类方法的动态调用?

chinanfq 2007-12-12 09:37:36
如这样一个函数:
function(string v)
{
a.v();
}

想实现:V="fun1".就调用a.fun1();
V="fun2",就调用a.func2();
谢谢!!!
...全文
417 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanjun_xf 2008-10-22
  • 打赏
  • 举报
回复
很好,顶下
angues1980 2007-12-12
  • 打赏
  • 举报
回复
a.getClass().getMethod(v, new Class[]{}).invoke(a, new Object[]{});
^
1.getClass()得到a的Class对象
2.getMethod(v,new Class[]{})得到a的名为v的不带参数的方法
如果要得到带参数的比如v(String var,int int)这样的方法,可以写成getMethod(v,new Class[]{String.class,int})
3.invoke(a, new Object[]{})
调用方法,第一个参数是要调用这个方法的对象,如果方法是static的,这个参数可以为null
new Object[]{}就是你调用这个方法时要传的参数,因为是空方法,所以没有参数,但是必须写成这样,不能为null
如果有参数就把参数传进去,比如上面的例子就要写成
invoke(a, new Object[]{new String("var1"),new Integer(1)})

总之就是相当于a.v();
chinanfq 2007-12-12
  • 打赏
  • 举报
回复
谢谢,大概明白了上面的代码.能不能给更详细的说明???
angues1980 2007-12-12
  • 打赏
  • 举报
回复
呵呵,慢了一步
angues1980 2007-12-12
  • 打赏
  • 举报
回复
可以去看看java的反射机制
主要是Class、Method这些个类
都在java.lang.reflect.*这个包里面呢
ChDw 2007-12-12
  • 打赏
  • 举报
回复
a.getClass().getMethod(v, new Class[]{}).invoke(a, new Object[]{});

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧