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方法的使用方法的更多相关文章

  1. Java反射中method.isBridge() 桥接方法

    桥接方法是 JDK 1.5 引入泛型后,为了使Java的泛型方法生成的字节码和 1.5 版本前的字节码相兼容,由编译器自动生成的方法.我们可以通过Method.isBridge()方法来判断一个方法是 ...

  2. JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别

    JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别   关于获取类的字段有两种方式:getFields()和getDeclaredFields().我们先来 ...

  3. Java 反射 Method的invoke回调调用任意方法

    Java 反射 Method的invoke回调调用任意方法 @author ixenos 关键子:Method.Field.invoke方法指针/函数指针.回调函数 invoke回调流程示例 0.由C ...

  4. JAVA深入研究——Method的Invoke方法。

    在写代码的时候,发现Method可以调用子类的对象,但子类即使是改写了的Method,方法名一样,去调用父类的对象也会报错,虽然这是很符合多态的现象,也符合java的动态绑定规范,但还是想弄懂java ...

  5. JAVA深入研究——Method的Invoke方法

    http://www.cnblogs.com/onlywujun/p/3519037.html 在写代码的时候,发现Method可以调用子类的对象,但子类即使是改写了的Method,方法名一样,去调用 ...

  6. JAVA深入研究——Method的Invoke方法(转)

    在写代码的时候,发现Method可以调用子类的对象,但子类即使是改写了的Method,方法名一样,去调用父类的对象也会报错,虽然这是很符合多态的现象,也符合java的动态绑定规范,但还是想弄懂java ...

  7. JAVA深入研究——Method的Invoke方法(转)

    原文地址:http://www.cnblogs.com/onlywujun/p/3519037.html 在写代码的时候,发现Method可以调用子类的对象,但子类即使是改写了的Method,方法名一 ...

  8. [转]JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别

    关于获取类的字段有两种方式:getFields()和getDeclaredFields().我们先来看看这两者的区别吧: getFields():获得某个类的所有的公共(public)的字段,包括父类 ...

  9. Java反射中的getClass()方法

    Java反射学习 所谓反射,可以理解为在运行时期获取对象类型信息的操作.传统的编程方法要求程序员在编译阶段决定使用的类型,但是在反射的帮助下,编程人员可以动态获取这些信息,从而编写更加具有可移植性的代 ...

随机推荐

  1. 禁用win7自己主动配置ipv4地址

    现象 一台新电脑,连了网线,没有dhcp,须要手动配置Ip. 配置了一个Ip后,发现ping网关不通. ipconfig 发现有2 个IP:  自己主动配置 IPv4 地址  . . . . . . ...

  2. Swift - 九宫格图片缩放总结样例

    1,图片左中右三宫格缩放形式 //左右14像素不变形,中间缩放 let imgTrackRight = UIImage(named:"slider_max") let imgRig ...

  3. css怎样使顶端悬浮导航栏不遮住下面一层页面内容

    在两个层之间加这个<span class="blank" style="height:20px;"></span>,其中高度可以自己设置 ...

  4. ZeroMQ:云计算时代最好的通讯库

    还在学socket编程吗?还在研究为什么epoll比select更好吗? 噢,不必了! 在复杂的云计算环境中,我们面临的难题远比这个复杂得多. 庞大的服务器集群作为计算云,对来来看或许只是一个简单的搜 ...

  5. Android菜鸟的成长笔记(14)—— Android中的状态保存探究(上)

    原文:[置顶] Android菜鸟的成长笔记(14)—— Android中的状态保存探究(上) 我们在用手机的时候可能会发现,即使应用被放到后台再返回到前台数据依然保留(比如说我们正在玩游戏,突然电话 ...

  6. spring mvc controller间跳转 重定向

    1. 需求背景     需求:spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示. 本来以为挺简单的一 ...

  7. Linux I/O 重定向详解及应用实例

    Linux I/O 重定向详解及应用实例 简解 > 输出 < 输入 >> 追加 & [> | < | >>]之前:输入输出; ls /dev & ...

  8. nmap -- write a nmap script

    漏洞扫描 --编写Nmap脚本 2006年12月份,Nmap4.21 ALPHA1版增加脚本引擎,并将其作为主线代码的一部分.NSE脚本库现在已经有400多个脚本.覆盖了各种不同的网络机制(从SMB漏 ...

  9. Swift - 图像控件(UIImageView)的用法

    1,使用图像控件显示图片 1 2 3 var imageView=UIImageView(image:UIImage(named:"icon")) imageView.frame= ...

  10. 程序启动读取和关闭时保存应用程序设置(QSettings)

    保存应用程序设置(QSettings)1. QSettings 类 QSettings 提供保存应用程序当前设置的接口,可以方便地保存程序的状态,例如窗口大小和位置,选项的选中状态等等.在 Windo ...