Java动态调用方法

来源:互联网 发布:华中科技大学网络计算 编辑:程序博客网 时间:2024/05/29 18:07
public void function(String str)    {          / /根据 str的值 调用相应的方法    }    public void test()    {         / /code    }  

如str的值为test,就调用test方法 



主要用到java反射机制,Class和Method这些类。 



动态调用的方法:a.getClass().getMethod(str, new Class[]{}).invoke(a, new Object[]{}) 

其中,a为类的对象,str为要被调用的方法名 

1、a.getClass()得到a.class 对象 

2、getMethod(str, new Class[]{})得到a对象中名为str的不带参数的方法。。。 

      如果str方法带参数如str(String s, int i),就要这样写getMethod(str, new Class[]{String.class,int.class}) 

3、invoke(a,new Object[]{})调用方法,第一个参数是要调用这个方法的对象,如果方法是static的,这个参数可以为null 

      如果调用有参数的方法str(String s, int i),应该这样写invoke(a,new Object[]{"jimmy", 1}) 



下面是代码,帮助理解 
Java代码  收藏代码
  1. public class MovingInvokeTest  
  2. {  
  3.     private static MovingInvokeTest movingInvokeTest = new MovingInvokeTest();    / /创建MovingInvokeTest对象  
  4.   
  5.   
  6.     public void do_test(String str,int i) throws Exception                                                 / /根据str字符串调用方法,变量i只是为了判断  
  7.   
  8.                                                                                                                                           / /调用有几个参数的方法  
  9.     {  
  10.       if(i == 0)                   / /调用没有参数的方法  
  11.        movingInvokeTest.getClass().getMethod(str, new Class[]{}).invoke(movingInvokeTest, new Object[]{});  
  12.       else if(i == 1)            / /调用有一个参数的方法,参数为String类型的s  
  13.        movingInvokeTest.getClass().getMethod(str, new Class[]{String.class}).invoke(movingInvokeTest, new Object[]{"s"});  
  14.       else if(i == 2)           / / /调用有两个参数的方法 参数分别为String类型的qw和int型的1  
  15.        movingInvokeTest.getClass().getMethod(str, new Class[]{String.class,int.class}).invoke(movingInvokeTest, new Object[]{"qw",1});  
  16.     }  
  17.   
  18.   /* 
  19.  
  20.    * 下面是3个方法 
  21.  
  22.    */  
  23.   
  24.     public void speak()  
  25.   
  26.   {  
  27.   
  28.          System.out.println("调用的没有参数的方法");  
  29.   
  30.   }  
  31.     public void speak(String s)  
  32.     {  
  33.        System.out.println("调用有一个参数的方法,参数为:"+s);  
  34.     }  
  35.     public void speak(String s,int i)  
  36.     {  
  37.         System.out.println("调用有两个参数的方法,参数为,参数为:"+s+"和" +i);  
  38.     }  
  39.   
  40.    
  41.   
  42.     / /main函数  
  43.   
  44.     public static void main(String[] args) throws Exception  
  45.     {     
  46.   
  47.                movingInvokeTest.do_test("speak",1);  
  48.     }  
  49.   
  50. }  
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 为什么迷茫 高三迷茫 有点迷茫 迷茫的诗句 迷茫的诗 迷茫弟 迷茫大明 迷茫的人生 一个人迷茫 大学迷茫 迷茫之恋全部章节目录 写给迷茫的自己 迷茫之恋90章到500章 迷茫之恋秦菲雪 迷茫什么意思是什么 十字路口迷茫的图片 迷茫的英文单词 迷茫是什么意思 男人迷茫无助的图片 男人迷茫的时候怎么办 迷茫的意思是什么 迷茫图片带字 迷茫什么意思 很迷茫不知道做什么工作 很迷茫不知道做什么好 我很迷茫不知道做什么 好迷茫不知道做什么工作 现在很迷茫怎么办 迷茫找什么工作好 我现在很迷茫不知道该做什么 想创业很迷茫 很迷茫怎么办 对未来很迷茫 很迷茫的句子 迷茫不知道做什么工作好 迷茫不知道做什么好 找工作很迷茫 我很迷茫怎么办 我好迷茫不知道做什么 人生迷茫的句子 我觉得很迷茫