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

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语言提供的一种强大的动态类型特性,它允许程序在运行时检查类、接口、字段和方法的信息,并且能够动态地创建对象和调用方法。这个能力使得开发者可以突破静态类型的束缚,实现一些在编译时期无法完成...

    Java方法反射调用demo

    Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java具有了高度的灵活性,常用于框架开发、插件系统、元编程等...

    Java反射调用方法

    通过掌握Java反射,开发者可以编写更灵活的代码,实现一些在编译时无法预知的功能,比如处理未知类的对象,或者在运行时根据条件动态调用方法。然而,反射也带来了一些潜在的问题,如性能损耗、安全风险和代码可读性...

    Java反射根据不同方法名动态调用不同的方法(实例)

    1. Java反射机制:通过`Class`类的`getMethod()`方法获取指定名称和参数类型的方法实例。 2. `Method`对象的`invoke()`方法:动态调用对象的方法并返回结果。 3. 使用反射处理动态的数据需求:根据用户配置的顺序...

    java动态调用方法

    Java动态调用方法是Java反射机制的一个重要应用,它允许我们在程序运行时,根据需要动态地获取类的信息并调用其方法。这种能力为代码的灵活性和可扩展性提供了强大的支持,尤其在处理不确定的对象类型或者需要在运行...

    Java反射方法调用

    在这个主题中,我们将深入探讨如何使用Java反射来调用不同类型的参数方法,包括无参方法、Object类型参数的方法、基本类型参数的方法以及数组参数的方法,以及如何调用私有方法。 首先,要调用无参方法,我们可以...

    java 反射得到某个方法

    在本文中,我们将深入探讨如何使用Java反射来获取并执行某个特定的方法。 首先,我们需要了解Java反射的基本概念。`java.lang.Class`类是反射的核心,它代表了Java中的每一个类。我们可以通过以下方式获取到一个...

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

    本文主要讲解了在遇到需要操作Java对象的参数或返回值时,如何利用Frida这一动态代码插桩工具来进行反射调用,包括调用对象的方法和获取对象的字段。Frida是一个强大的动态代码插桩工具,它可以注入到几乎所有的进程...

    反射,动态加载指定类调用类中的方法

    反射机制使得我们能够在运行时动态地获取类的信息,并且能够创建对象、调用方法、访问字段,甚至改变类的行为。在Java中,`java.lang.reflect`包提供了对反射的支持。 在“反射,动态加载指定类调用类中的方法”这...

    通过反射调用静态方法

    在Java编程中,反射是一种强大的工具,它允许我们在运行时检查和操作类、接口、字段以及方法等...这些文件都是Java开发中的常见元素,与反射调用静态方法的主题直接关联性不大,但它们构成了一个完整的Java项目环境。

    java反射,获取所有属性、方法以及List集合类

    总结来说,Java反射提供了一种动态操控Java对象的能力,允许我们在运行时发现和改变类的行为。虽然它强大且灵活,但也应谨慎使用,因为它可能会降低代码的可维护性和安全性。在实际开发中,反射常用于框架、插件系统...

    JAVA反射参数传递概略

    总的来说,“JAVA反射参数传递概略”这个主题涵盖了如何使用反射来调用方法,特别是处理参数传递的细节。通过熟练掌握反射,开发者能够实现更灵活的代码,比如动态代理、插件系统或者元编程,但同时也需要注意反射...

    Java反射调用工具类

    Java反射调用是Java语言提供的一种强大的动态类型机制,它允许程序在运行时检查并使用类的信息,包括类的方法、属性以及构造器等。在Java中,反射是通过`java.lang.reflect`包中的类实现的,如`Class`、`Constructor...

    java反射调用实例代码

    Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个资源“java反射调用实例代码”提供了关于如何使用Java反射API进行各种...

    java反射机制,调用私有方法

    Java反射机制是Java编程语言中的一个强大工具,它允许程序在运行时检查和操作类、接口、字段和方法的信息。这种动态类型的能力使得Java代码能够处理未知或未提前定义的对象,增强了程序的灵活性和可扩展性。在Java中...

    JNI反射调用Java方法1

    反射在Java中是一个强大的工具,允许程序在运行时动态地访问和修改类、接口、字段和方法。以下是对标题和描述中所述知识点的详细解释: 1. **找类字节码**: 在JNI中,我们需要使用`FindClass`函数来找到对应的...

    java反射 java反射 java反射java反射

    Java反射是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。在Java中,反射机制提供了强大的能力,包括在运行时检查类的结构、创建对象实例、调用方法以及访问和修改字段值。...

    Java 反射详解(包含私有方法属性的调用)

    Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java程序具有了高度的灵活性和动态性,尤其在框架开发、插件系统...

    java 反射入门-属性方法调用实例

    这篇博文将带你入门Java反射,并通过属性和方法的调用来实践这一概念。 首先,理解反射的基础概念。在Java中,`Class`类代表了运行时的类信息。通过`Class`对象,我们可以获取到类的名称、构造器、方法和字段。例如...

    Java 反射-动态代理

    Java反射允许我们在运行时检查类、接口、字段和方法的信息,甚至可以创建和调用对象。它主要通过java.lang.Class类和java.lang.reflect包中的类(如Constructor、Method和Field)来实现。以下是一些核心知识点: 1....

Global site tag (gtag.js) - Google Analytics