java反射中Method类invoke方法的使用方法
package com.zsw.test;
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;
/**
 * <p>Title: java反射中Method类invoke方法的使用方法</p> *
 * <p>Description: </p> *
 * <p>Copyright: Copyright (c) 2009</p> *
 * <p>Company: 嘉盈公司</p> *
 * @author zsw
 * @version 1.0
 */
public class InvokeTester {
    
    private String name;
    
    public void setName(String name){
        this.name = name;
    }    
    public String getName(){
        return name;
    }    
    
    public InvokeTester() {
    }
public int add(int param1, int param2) {
        return param1 + param2;
    }
    public String echo(String mesg) {
        return "echo" + mesg;
    }
public static void main(String[] args) {
        Class classType = InvokeTester.class;
        try {
            Object invokertester = classType.newInstance();   //1
Method addMethod = classType.getMethod("add", new Class[] {  //2
                    int.class, int.class
            });
Object result = addMethod.invoke(invokertester, new Object[] {        //3
                                             new Integer(100), new Integer(200)
            });
System.out.println(result);
            //////////////////////
            Method echo = classType.getMethod("echo", new Class[] {String.class});
            Object obj = echo.invoke(invokertester,
                                     new Object[] {new String("jy is very good!!!")});
            System.out.println(obj.toString());
            
            ////////////////////
            InvokeTester test = new InvokeTester();   //1
            test.setName("黄翊");                      //2
            
            //Method[] methods;
            Method[] methods = test.getClass().getDeclaredMethods();  //3
            
            //循环查找获取id方法,并运行查看是否有返回值
                for (int i = 0; i < methods.length; i++) {
                    
                        //假设此方法有get和Idkeyword则运行
                        if (methods[i].getName().indexOf("get") != -1 && methods[i].getName().indexOf("Name") != -1) {
                                try{
                                        // 获取此get方法返回值,推断是否有值,假设没有值说明即将运行的操作新增
                                        if (methods[i].invoke(test, null) == null) {  //4                                            
                                            System.out.println("此对象没有值!!!");                             
                                        } else {
                                               Object strName =  methods[i].invoke(test, null);
                                               System.out.println(strName);
                                        }
                                }catch(Exception e){
                                        System.out.print("");
                                }
                        }
                }
        } catch (IllegalAccessException ex) {
        } catch (InstantiationException ex) {
        } catch (SecurityException ex) {
        } catch (NoSuchMethodException ex) {
        } catch (InvocationTargetException ex) {
        } catch (IllegalArgumentException ex) {
        }
    }
}
java反射中Method类invoke方法的使用方法的更多相关文章
- Java反射中method.isBridge() 桥接方法
		
桥接方法是 JDK 1.5 引入泛型后,为了使Java的泛型方法生成的字节码和 1.5 版本前的字节码相兼容,由编译器自动生成的方法.我们可以通过Method.isBridge()方法来判断一个方法是 ...
 - JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别
		
JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别 关于获取类的字段有两种方式:getFields()和getDeclaredFields().我们先来 ...
 - Java 反射 Method的invoke回调调用任意方法
		
Java 反射 Method的invoke回调调用任意方法 @author ixenos 关键子:Method.Field.invoke方法指针/函数指针.回调函数 invoke回调流程示例 0.由C ...
 - JAVA深入研究——Method的Invoke方法。
		
在写代码的时候,发现Method可以调用子类的对象,但子类即使是改写了的Method,方法名一样,去调用父类的对象也会报错,虽然这是很符合多态的现象,也符合java的动态绑定规范,但还是想弄懂java ...
 - JAVA深入研究——Method的Invoke方法
		
http://www.cnblogs.com/onlywujun/p/3519037.html 在写代码的时候,发现Method可以调用子类的对象,但子类即使是改写了的Method,方法名一样,去调用 ...
 - JAVA深入研究——Method的Invoke方法(转)
		
在写代码的时候,发现Method可以调用子类的对象,但子类即使是改写了的Method,方法名一样,去调用父类的对象也会报错,虽然这是很符合多态的现象,也符合java的动态绑定规范,但还是想弄懂java ...
 - JAVA深入研究——Method的Invoke方法(转)
		
原文地址:http://www.cnblogs.com/onlywujun/p/3519037.html 在写代码的时候,发现Method可以调用子类的对象,但子类即使是改写了的Method,方法名一 ...
 - [转]JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别
		
关于获取类的字段有两种方式:getFields()和getDeclaredFields().我们先来看看这两者的区别吧: getFields():获得某个类的所有的公共(public)的字段,包括父类 ...
 - Java反射中的getClass()方法
		
Java反射学习 所谓反射,可以理解为在运行时期获取对象类型信息的操作.传统的编程方法要求程序员在编译阶段决定使用的类型,但是在反射的帮助下,编程人员可以动态获取这些信息,从而编写更加具有可移植性的代 ...
 
随机推荐
- ext4 delalloc相关
			
ext4文件系统delayed allocation相关研究 最近在一个项目上测试录音时,发现有丢数据的现象.通过串口发现打出了很多overrun的log. overrun是驱动层给上层应用的一个通知 ...
 - (step6.3.3)hdu 1150(Machine Schedule——二分图的最小点覆盖数)
			
题目大意:第一行输入3个整数n,m,k.分别表示女生数(A机器数),男生数(B机器数),以及它们之间可能的组合(任务数). 在接下来的k行中,每行有3个整数c,a,b.表示任务c可以有机器A的a状态或 ...
 - Linux开发环境的搭建和使用——Linux 常用的命令使用
			
概要 视或电影中看到过类似的场景,黑客面对一个黑色的屏幕,上面飘着密密麻麻的字符,梆梆一顿敲,就完毕了窃取资料的任务. Linux 刚出世时没有什么图形界面.全部的操作全靠命令完毕.就如同电视里的黑客 ...
 - Swift - 数字格式化转成字符串(保留两位小数)
			
1,下面是一个浮点类型的数字转成String字符串的例子 1 2 var f = 123.32342342 var s:String = "\(f)" //123.32342342 ...
 - 开发人员福利!ChromeSnifferPlus 插件正式登陆 Chrome Web Store
			
今天(2014-10-30)下午,ChromeSnifferPlus 插件正式登陆 Chrome Web Store. 在线安装地址: https://chrome.google.com/websto ...
 - 手动配置S2SH三大框架报错(三)
			
十二月 08, 2013 10:24:43 下午 org.apache.catalina.core.AprLifecycleListener init 严重: An incompatible vers ...
 - 怎么提高ArcGIS for Desktop10.x的性能
			
Esri新公布了一篇提高ArcGIS for Desktop10.x的性能的文章.大家能够关注一下 http://support.esri.com/en/knowledgebase/techartic ...
 - 如何在Android Studio上使用Github
			
首先,登陆到Github上并创建一个新repository.在屏幕右上角,点击“+”标记,并且选择“New repository”. 现在完成这个表格以新建一个叫做testproject的新repos ...
 - expect实现ssh自动登录
			
expect实现ssh自动登录 #!/usr/local/bin/expect set PASSWD [lindex $argv 1] set IP [lindex $argv 0] set CM ...
 - 执行Asp.net应用程序在Linux上的3种托管方式
			
执行Asp.net应用程序在Linux上的3种托管方式 想要执行Asp.net应用程序在Linux上.我们有3种选择: 1.使用Apache作为Webserver.使用mod_mono:http:// ...