java反射 动态调用_java反射拼接方法名动态执行方法
近期由于负责项目的一个模块,该模块下有很多分类,每个分类都有一个编码code,这个值是作为一个参数携带过来的.但是每个code确实对应一个方法的.
code的值有很多个,自己又不想做ifelse或者switch判断于是就狂搜资料,主要让我发现利用java的反射机制可以完美的解决这个问题
测试代码如下:(可以携带多个参数哦)
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
System.out.println(str);
//}
return str;
}
public String ceshi2(String str,int i){
for(int j=0;j
System.out.println(str+"22222");
}
return str;
}
}
这样要是动态拼接方法名就更简单了.比如,我的code值有100个,分别为1~100,我code方法分别为ReturnCodeList();这个时候我们把上面的方法抽取出来,返回我们需要的值就行了比如:
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反射原理的可以参考:http://www.cnblogs.com/forlina/archive/2011/06/21/2085849.html
java反射 动态调用_java反射拼接方法名动态执行方法相关推荐
- java反射 获取属性_Java反射学习-3 - 反射获取属性,方法,构造器
1 packagecn.tx.reflect;2 3 importjava.lang.reflect.Constructor;4 importjava.lang.reflect.Field;5 imp ...
- Spring AOP根据JdbcTemplate方法名动态设置数据源
2019独角兽企业重金招聘Python工程师标准>>> 说明:现在的场景是,采用数据库(Mysql)复制(binlog)的方式在两台不同服务器部署并配置主从(Master-Slave ...
- JDK源码解析 Runable是一个典型命令模式,Runnable担当命令的角色,Thread充当的是调用者,start方法就是其执行方法
JDK源码解析 Runnable是一个典型命令模式, Runnable担当命令的角色,Thread充当的是调用者,start方法就是其执行方法 /命令接口(抽象命令角色) public interfa ...
- java反射方法调用_Java反射(3)调用方法
目录: 1.访问方法(Method)对象的方法汇总 2.获取方法(Method)对象中的值 3.设置方法(Method)对象中的值 1.访问Method的方法汇总 以下四种方法在Class类可以返回关 ...
- java反射传递参数_Java反射 调用传参
//测试方法 @Test public void test01() { Class p = null; Person01 person01 = new Person01(); try { p = Cl ...
- java反射机制知识_Java反射机制讲解,程序员必须掌握的知识点
关注程序员7歌,一起用技术改变世界 大家好,我是程序员7歌,今天我为大家讲解Java的反射机制. 首先我们来看看反射的概念: Java反射说的就是在程序运行中,任何一个类,我们都可以知道这个类的方法和 ...
- java class 生成对象_Java反射机制(创建Class对象的三种方式)
1:SUN提供的反射机制的类: java.lang.Class java.lang.reflect.Constructor java.lang.reflect.Field java.lang.refl ...
- java反射重要么_JAVA反射----这些知识你需要知道
前言: 在学习JAVA的反射之前我觉得很有必要花几分钟时间了解一下JVM的内存结构.如果一开始就说什么是反射,以及反射的API.这样做是很难真正的理解反射的. JVM是JAVA跨平台的核心,其结构为上 ...
- java反射的运用_java反射的使用
java反射的使用 1 什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力. JAVA反射机制是在运行状态中,对于任意一个类,都能够 ...
最新文章
- Linux网卡重启后会有哪些更新,问题:linux系统经常出现断网的情况,重启之后系统恢复正常...
- js算法入门(2)--哈希表
- Postgresql死锁的处理
- Service Mesh 在中国工商银行的探索与实践
- jsp到java xml配置,JSP中web配置:web.xml
- vb鼠标涂鸦板的制作
- 降级安装_如何升级iOS13测试版,还有降级
- postgresql对于HashJoin算法的Data skew优化与MCV处理
- nodejs与javascript中的aes加密
- 小米mysql安装教程_小米 SOAR 开源SQL优化工具安装
- [Java] 蓝桥杯ADV-91 算法提高 素数判断
- 关于asp.net上传图片自动生成缩略图
- 备忘:BLOCK CORRUPTION IN SYSTEM DATAFILE
- DOSBox 的安装及使用 详细教程
- SpacePack 运维工具之 Auto fdisk
- 马云:今天互联网创业还靠免费是死路一条
- windows xp快捷键
- Eclipse中查看源代码
- PS知识点大总结(二)——通道蒙版与图形图标设计
- lumen框架的理解
热门文章
- 跨域获取后台数据undefined_同源策略amp;JSONP跨域
- 软件工程(可行性研究讲解)
- 生活中java继承例子_简单继承例子:java
- 【SpringBoot 2】(十)数据库相关
- 洛谷 P2689 东南西北【模拟/搜索】
- thinkphp5.0助手函数占用服务器资源
- 364. Nested List Weight SumII
- org.apache.catalina.LifecycleException: Failed to
- SublimeText2使用笔记
- 转:数字对讲机常识介绍