java通过字符串调用方法,java反射应用实例
2016-05-25 22:18
741 查看
有时候我们希望像Javascript一样通过字符串调用方法,这就需要用到java的反射机制了。
下面给出一个示例:
1、先写一个测试的被调用方法(在 com.test 包下的 MyTest 方法,故全类名就是 com.test.MyTest)
2、再写一个通过字符串调用其他方法的工具类
3、写一个main方法测试是否正确调用
下面给出一个示例:
1、先写一个测试的被调用方法(在 com.test 包下的 MyTest 方法,故全类名就是 com.test.MyTest)
package com.test; public class MyTest { public String hello(String param){ return "Hello "+param; } }
2、再写一个通过字符串调用其他方法的工具类
public class CallMethod { /** * 通过字符串串调用方法 * @param classAndMethod 类名-方法名,通过此字符串调用类中的方法 * @param paramTypes 方法类型列表(因为方法可能重载) * @param params 需要调用的方法的参数列表 * @return */ public Object call(String classAndMethod,Class[] paramTypes,Object[] params){ String[] args=classAndMethod.split("-"); //要调用的类名 String className=args[0]; //要调用的方法名 String method=args[1]; try { //加载类,参数是完整类名 Class clazz = Class.forName(className); //第一个参数是方法名,后面的参数指示方法的参数类型和个数 Method theMethod=clazz.getMethod(method,paramTypes); //第一个参数类实例(必须有对象才能调用非静态方法,如果是静态方法此参数可为null),后面是要传个方法的参数 Object result=theMethod.invoke(clazz.newInstance(),params); return result; //这里为了博客上简洁一些把其他catch都去掉了(复制代码的同学应该把其他异常的catch搞出来) } catch (Exception e) { e.printStackTrace(); } return null; } }
3、写一个main方法测试是否正确调用
public static void main(String[] args) { MainTest test=new MainTest(); //我们测试要调用的hello方法只有一个String参数 Class[] paramTypes={String.class}; //给hello方法传参数"World" Object[] params={"World"}; Object result=MainTest.call("com.test.MyTest-hello",paramTypes,params); //已测试输出 "Hello World" System.out.println((String)result); }
相关文章推荐
- Java反射学习 getClass()函数应用
- java反射实现javabean转json实例代码
- Java反射中常用的操作方法
- Java 反射
- java 通过反射获取调用类方法及属性
- Java高级编程 - 使用反射强制给private字段赋值
- Java高级编程 - 使用反射强制给private字段赋值
- java课堂练习,反射
- JAVA基础之反射
- java反射
- java基础反射
- Android获取apk签名信息(举例说明java反射调用方法步骤)
- 理解JAVA反射机制
- 黑马程序员---java基础加强 反射的深入理解
- 黑马程序员-----java基础java的反射机制
- java 通过反射获取调用类方法及属性
- java 反射调用带回调接口的函数
- JAVA反射
- 黑马程序员——【Java反射学习】Class类的使用
- 黑马程序员——【Java反射学习】方法的反射/成员变量的反射/构造函数的反射