java中利用反射机制实现调用给定为字符串的方法名
2017-05-05 16:48
956 查看
1、被测试类
package demo.reflect;
/**
* 被测试类
* @author wangyanjun
*
*/
public class Quizzee {
public void testMethod(String arg1,Integer arg2){
System.out.println("测试结果:反射方法的调用");
System.out.println(arg1+" "+arg2);
System.out.println("测试成功!");
}
}
2、测试
package demo.reflect;
import Java.lang.reflect.Method;
/**
* 功能:调用给定为字符串的方法名
* @author wangyanjun
*
*/
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
try {
//返回给定字符串名的类 Class 对象
//并创建此 Class 对象所表示的类的一个新实例
Object object = Class.forName("demo.reflect.Quizzee").newInstance();
//返回方法名为“testMethod”的一个 Method 对象,后面跟的是该方法参数
Method method = object.getClass().getMethod("testMethod",
new Class[] { String.class, Integer.class });
//执行该方法
method.invoke(object, new Object[]{new String("数据1"),520});
} catch (Exception e) {
e.printStackTrace();
}
}
}
3. invoke class 内 static 方法
//统一方法调用
public static String methodInvoke(String methodName,String arg1,String arg2,String arg3){
Class<?> cls = DomainCrossInfo.class;
Method[] methods = cls.getDeclaredMethods();
String methodsName = "";
String result = "error";
for (Method method : methods) {
methodsName += method.getName() +",";
}
if(methodsName.indexOf(methodName)>=0){
//返回方法名为“testMethod”的一个 Method 对象,后面跟的是该方法参数
Method method;
try {
method = cls.getMethod(methodName,new Class[] { String.class, String.class,String.class });
result = (String) method.invoke(null, new Object[]{arg1,arg2,arg3});
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
return result;
}
return result;
}
package demo.reflect;
/**
* 被测试类
* @author wangyanjun
*
*/
public class Quizzee {
public void testMethod(String arg1,Integer arg2){
System.out.println("测试结果:反射方法的调用");
System.out.println(arg1+" "+arg2);
System.out.println("测试成功!");
}
}
2、测试
package demo.reflect;
import Java.lang.reflect.Method;
/**
* 功能:调用给定为字符串的方法名
* @author wangyanjun
*
*/
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
try {
//返回给定字符串名的类 Class 对象
//并创建此 Class 对象所表示的类的一个新实例
Object object = Class.forName("demo.reflect.Quizzee").newInstance();
//返回方法名为“testMethod”的一个 Method 对象,后面跟的是该方法参数
Method method = object.getClass().getMethod("testMethod",
new Class[] { String.class, Integer.class });
//执行该方法
method.invoke(object, new Object[]{new String("数据1"),520});
} catch (Exception e) {
e.printStackTrace();
}
}
}
3. invoke class 内 static 方法
//统一方法调用
public static String methodInvoke(String methodName,String arg1,String arg2,String arg3){
Class<?> cls = DomainCrossInfo.class;
Method[] methods = cls.getDeclaredMethods();
String methodsName = "";
String result = "error";
for (Method method : methods) {
methodsName += method.getName() +",";
}
if(methodsName.indexOf(methodName)>=0){
//返回方法名为“testMethod”的一个 Method 对象,后面跟的是该方法参数
Method method;
try {
method = cls.getMethod(methodName,new Class[] { String.class, String.class,String.class });
result = (String) method.invoke(null, new Object[]{arg1,arg2,arg3});
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
return result;
}
return result;
}
相关文章推荐
- java中利用反射机制实现调用给定为字符串的方法名
- 利用反射机制,获取类的字段、方法、并实现简单调用
- 【Android开发经验】利用反射机制,获取类的字段、方法、并实现简单调用
- Java记录 -88- 利用反射机制调用对象的私有方法和属性
- java中由类名和方法名字符串实现其调用【反射机制】
- Java记录 -88- 利用反射机制调用对象的私有方法和属性
- 利用java的反射机制调用类的私有方法及私有属性
- 利用java反射调用实现对字符串的解析,成功调入函数,并且返回值
- Java通过反射实现方法调用
- Java的反射机制-动态调用对象的方法
- 利用.NET Remoting基础架构中的真实代理/透明代理技术实现了不针对具体类型、具体方法的通用方法调用拦截机制
- JAVA利用反射模式调用实现类
- Java 反射机制运用实例(动态调用类的方法)
- 【转】java的反射机制中的动态代理代理(二)--在远程方法调用中运用代理类
- 利用Java的反射机制解析一个Class对象的详细内容(工具方法留用)
- 在工厂模式里面利用反射机制动态调用对象方法
- 利用java反射解决 Android系统方法不能调用的情况
- java利用反射来调用一个类的私有方法
- 反射实现方法调用(1):执行机制
- java反射调用main方法,private方法实现