gpt4 book ai didi

java反射拼接方法名动态执行方法实例

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 38 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章java反射拼接方法名动态执行方法实例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

近期由于负责项目的一个模块,该模块下有很多分类,每个分类都有一个编码code,这个值是作为一个参数携带过来的。但是每个code确实对应一个方法的.

code的值有很多个,自己又不想做ifelse或者switch判断于是就狂搜资料,主要让我发现利用java的反射机制可以完美的解决这个问题 。

测试代码如下:(可以携带多个参数哦) 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.escs.xmlutils;
 
import java.lang.reflect.Method;
 
public class Test {
 
     public String ceshi(){
         System.out.println( "1111111111111" );
         return "success" ;
     }
      public static void main(String[] args) throws Exception {
              //里面写自己的类名及路径
             Class<?> c = Class.forName( "com.escs.xmlutils.Test" );
             Object obj = c.newInstance();
             //第一个参数写的是方法名,第二个\第三个\...写的是方法参数列表中参数的类型
             Method method=c.getMethod( "ceshi2" , String. class , int . class );
             //invoke是执行该方法,并携带参数值
             String str2= (String) method.invoke(obj, new Object[]{ "myname" , 4 });
           System.out.println(str2);
          }  
      public String ceshi(String str){
          //for(int j=0;j<Integer.valueOf(i);j++){
              System.out.println(str);
          //}
        
          return str;
      }
         
      public String ceshi2(String str, int i){
          for ( int j= 0 ;j<i;j++){
              System.out.println(str+ "22222" );
          }
        
          return str;
      }
      
     }

这样要是动态拼接方法名就更简单了.比如,我的code值有100个,分别为1~100,我code方法分别为ReturnCodeList();这个时候我们把上面的方法抽取出来,返回我们需要的值就行了比如:

?
1
2
3
4
5
6
7
8
9
10
public String fanShe(String methodName,String className) throws ClassNotFoundException, SecurityException, NoSuchMethodException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
         //里面写自己的类名及路径
             Class<?> c = Class.forName(className);
             Object obj = c.newInstance();
             //第一个参数写的是方法名,第二个\第三个\...写的是方法参数列表中参数的类型
             Method method=c.getMethod(methodName, String. class , int . class );
             //invoke是执行该方法,并携带参数值
             String str2= (String) method.invoke(obj, new Object[]{ "myname" , 4 });
             return str2;
      }

当然在实际的需求中还是要根据项目的需要来自己抽取方法的.希望对大家有帮助.

以上这篇java反射拼接方法名动态执行方法实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.

最后此篇关于java反射拼接方法名动态执行方法实例的文章就讲到这里了,如果你想了解更多关于java反射拼接方法名动态执行方法实例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com