`
lingyun246
  • 浏览: 37554 次
  • 来自: 北京
社区版块
存档分类
最新评论

java 反射 根据不同方法,不同参数动态调用方法

阅读更多
package com.springapp.mvc;

import java.lang.reflect.Method;


public class helloWord {

    /**
     * @param args
     */
    public static void main(String[] args) {
        try {
            Hello h=new Hello();
            Object[] argspara=new Object[]{};
            Object aa = helloWord.invokeMethod(h,"helloStrs",argspara);
            System.out.println("*******"+aa.toString()+"*******");

            helloWord.invokeMethod(h, "helloStrs",argspara);
            argspara=new Object[]{"he"};
            helloWord.invokeMethod(h, "helloStrs",argspara);
            argspara=new Object[]{"she",2};
            helloWord.invokeMethod(h, "helloStrs2",argspara);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 反射调用方法
     * @param newObj 实例化的一个对象
     * @param methodName 对象的方法名
     * @param args 参数数组
     * @return 返回值
     * @throws Exception
     */
    public static Object invokeMethod(Object newObj, String methodName, Object[] args)throws Exception {
        Class ownerClass = newObj.getClass();
        Class[] argsClass = new Class[args.length];
        for (int i = 0, j = args.length; i < j; i++) {
            argsClass[i] = args[i].getClass();
        }
        Method method = ownerClass.getMethod(methodName, argsClass);
        return method.invoke(newObj, args);
    }

}

class Hello{

    public String helloStrs(){
        //根据不同的方法名称,调用不用的方法
        System.out.println("hello1");
        return "hello1";
    }

    public void helloStrs(String a) {
        //根据不同的方法名称,调用不用的方法
        System.out.println("hello11");
    }

    public void helloStrs2(String a ,Integer b) throws Exception{
        //根据不同的方法名称,调用不用的方法
        System.out.println("hello12");
    }
}


分享到:
评论
1 楼 shulinshulinzi 2017-05-03  
invokeMethod碰到int ,short,double,boolean等基础数据类型就失效了

相关推荐

    java 反射 调用私有方法(有参数私有方法)获取私有属性值

    java 反射 调用私有方法(有参数私有方法)获取私有属性值

    Java方法反射调用demo

    Java反射 调用空参方法 调用Object类型参数的方法 调用基本类型参数的方法 调用基本类型数组参数的方法 调用String数组参数的方法 调用Object数组参数的方法 调用私有方法

    Java反射方法调用

    调用空参方法 调用Object类型参数的方法 调用基本类型参数的方法 调用数组参数的方法 调用私有方法

    java反射调用

    java反射调用set方法时如果让参数做自动类型转换5 这段时间学习java的反射机制想实现一个功能:遍历一个Map,然后利用反射机制调用BO的set方法,完成BO属性的自动注入。这样设计的初衷是解决Excel数据导入问题中的...

    frida反射调用对象中的方法与字段.pdf

    该篇文章主要介绍当我们碰到参数或者返回值是一个对象时,如何通过frida反射调用该对象的方法(methods)与获取该对象的字段(fields)。感兴趣的朋友可以下载下来看看,了解了解

    java根据方法名称取得反射方法的参数类型示例

    利用java反射原理调用方法时,常先需要传入方法参数数组才能取得方法。该方法参数数组采用动态取得的方式比较合适

    javassist反射类

    java反射的工具类,可以获得方法的参数名称

    java通过反射创建对象并调用方法

    主要介绍了java通过反射创建对象并调用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Java泛型和反射.ppt

    一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为...

    反射处理java泛型

    当我们声明了一个泛型的接口...如果还不了解java反射知识,那么你可以先移步到Oracel反射课程,这可能是你开始学习反射的好起点.  ReflectionUtil中包含以下几种功能:  通过Type获取对象class;  通过Type创建对

    Java开发技术大全(500个源代码).

    invokeMethod.java 利用反射机制调用成员方法 listConstructors.java 利用反射机制获取构造器列表 listFields.java 利用反射机制获取成员属性列表 listMethods.java 利用反射机制获取成员方法列表 loadClass....

    java api最新7.0

    java.util.concurrent.locks 为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器。 java.util.jar 提供读写 JAR (Java ARchive) 文件格式的类,该格式基于具有可选清单文件的标准 ZIP 文件格式。 java...

    廖雪峰 Java 教程.doc

    调用构造方法 获取继承关系 动态代理 注解 使用注解 定义注解 处理注解 泛型 什么是泛型 使用泛型 编写泛型 擦拭法 extends通配符 super通配符 泛型和反射 集合 Java集合简介 使用List 编写equals...

    kevvy-reflect:高性能Java反射

    高性能的java反射,适用于频繁调用的情况!! 概述 Kevvy-Reflect是一个非常小的Java库,它通过使用代码生成(取决于ASM)来提供高性能的反射。 表现 ###现场反射: #####非私有字段 #####私人字段 ##### Bean字段...

    JAVA_API1.6文档(中文)

    java.util.concurrent.locks 为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器。 java.util.jar 提供读写 JAR (Java ARchive) 文件格式的类,该格式基于具有可选清单文件的标准 ZIP 文件格式。 ...

    java高级特性,涵盖了多种java常用的一些例子

    在运行状态中,对于任意一个类能够获取类中的所有属性和方法,对于任意一个对象能够调用对象中的属性和方法,这种动态获取属性和方法的机制:反射。 设计模式1(单例,工厂) 设计模式2(观察者,适配器) 设计模式...

    JavaRpc:JAVA RPC实现,基于动态代理与反射

    当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。 看到这可能比较晕,没关系,我的理解是这样...

    Java开发热门常问面试题目资料解答合集40个资料左右.zip

    Java中的String是可变字符串还是不可变字符串? 答:String是不可变字符串,...答:反射是Java中的一个重要机制,可以在运行时动态获取类的信息,并且调用类的方法、修改类的属性等。反射的作用是增强代码的灵活性和

    JAVA面试题最全集

    一、Java基础知识 1.Java有那些基本数据类型,String是不是基本...这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() ...

Global site tag (gtag.js) - Google Analytics