`

java反射获取方法参数及返回值类型

    博客分类:
  • java
阅读更多

package test;

    import java.lang.reflect.Method;
    import java.lang.reflect.ParameterizedType;
    import java.lang.reflect.Type;
    import java.util.List;
import java.util.Map;

public class TempTest {
    public static void main(String[] args) throws Exception {
        Method[] methods = TempTest.class.getDeclaredMethods();
        for (Method method : methods) {
            System.out.println("method:" + method.getName());// 方法名

            // //////////////方法的参数
            System.out.println(" paramTypeType: ");
            Type[] paramTypeList = method.getGenericParameterTypes();// 方法的参数列表
            for (Type paramType : paramTypeList) {
                System.out.println("  " + paramType);// 参数类型
                if (paramType instanceof ParameterizedType)/**//* 如果是泛型类型 */{
                    Type[] types = ((ParameterizedType) paramType)
                            .getActualTypeArguments();// 泛型类型列表
                    System.out.println("  TypeArgument: ");
                    for (Type type : types) {
                        System.out.println("   " + type);
                    }
                }
            }

            // //////////////方法的返回值
            System.out.println(" returnType: ");
            Type returnType = method.getGenericReturnType();// 返回类型
            System.out.println("  " + returnType);
            if (returnType instanceof ParameterizedType)/**//* 如果是泛型类型 */{
                Type[] types = ((ParameterizedType) returnType)
                        .getActualTypeArguments();// 泛型类型列表
                System.out.println("  TypeArgument: ");
                for (Type type : types) {
                    System.out.println("   " + type);
                }
            }

        }

    }

    public static String method1(List list) {
       return null;
    }

    private static Map<String, Double> method2(Map<String, Object> map) {
        return null;
    }

}
分享到:
评论

相关推荐

    反射 reflect 根据方法名得到方法,并根据不同的数据类型参数和不同的返回值类型

    对于"不同的返回值类型",Java反射API并不直接支持根据返回值类型来查找方法。通常,我们先根据方法名和参数类型找到可能匹配的方法,然后再通过检查返回值类型来进一步筛选。例如: ```java List&lt;Method&gt; methods ...

    java反射.pdf

    Java反射是Java编程语言的一个特性,它允许运行时检查和操作程序结构(类、字段、方法等)。反射的主要用途包括但不限于:动态实例化对象、访问私有成员、调用方法、获取类的信息等。 #### 二、如何创建反射类? ...

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

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

    Java获取代码中方法参数名信息的方法

    然而,标准的Java反射API并不直接提供获取方法参数名的功能。尽管可以获取到方法的其他元数据,如方法名、返回类型、参数类型等,但参数名在默认情况下并未包含在编译后的字节码中。这是因为参数名被视为调试信息,...

    java 反射ppt 和 code 示例

    Java反射是Java编程语言中的一个重要特性,它允许程序在运行时检查和操作类、接口、字段和方法等对象。在“java 反射ppt 和 code 示例”中,我们可以深入理解这个强大的工具及其在实际开发中的应用。 首先,PPT部分...

    JAVA反射知识总结

    - 获取私有的有参数、有返回值函数:实例化类对象,通过`getDeclaredMethod(方法名, 参数类型.class)`获取方法对象,调用`setAccessible(true)`后,使用`invoke(对象实例, 参数值...)`调用方法。 5. setAccessible...

    利用java反射调用实现对字符串的解析,成功调入函数,并且返回值

    在这个场景中,我们关注的是如何利用Java反射调用来解析字符串并执行相关函数,最终获取返回值。下面将详细阐述这个过程。 首先,`ReflectUtils.java` 文件可能包含了一些静态方法,这些方法提供了反射操作的便利...

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

    `invoke()`方法则是`Method`类的一个方法,用于调用获取到的方法,传入对象实例和参数列表,可以执行方法并获取返回值。 例如,如果我们有一个私有方法`private void secretMethod(int arg)`,我们可以通过以下方式...

    java反射原理详解

    这使得我们能够在运行时调用未知的方法,传递参数并获取返回值。 5. **创建实例**:`Class`对象的`newInstance()`方法用于创建类的新实例,前提是类有默认构造器。如果需要调用特定构造器,可使用`Constructor`类的...

    java 反射得到某个方法

    在标题“java 反射得到某个方法”中,我们将探讨如何使用Java反射API来获取并执行类中的特定方法。 首先,我们需要导入Java反射相关的类,主要来自`java.lang.reflect`包,包括`Class`、`Method`和`Invocation...

    检测函数返回值类型的简单程序.rar

    3. **反射(Reflection)**:通过`java.lang.reflect.Method`类获取函数信息,包括其返回类型。例如: ```java Method method = MyClass.class.getMethod("myFunction"); Class&lt;?&gt; returnType = method....

    用反射解析jar文件并执行里面Java代码

    在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段以及方法等对象。通过反射,我们可以在不知道具体类名的情况下实例化对象,调用方法,访问和修改私有成员,以及...

    9.3 Java反射reflect

    获取到`Method`对象后,可以调用`invoke()`方法来执行对应的方法,传递参数并获得返回值。这对于调用私有方法或者在不明确知道方法名称的情况下调用方法非常有用。 4. **Field类**:`Field`类代表类的字段(属性)...

    Java反射技术栈1

    //调用方法,有返回值 Method method=clazz.getDeclaredMethod(“方法名”, 参数类型的 Class 对象); method.setAccessible(true); //暴力访问,用于访问私有方法 Object result=method.invoke(obj, 参数); 2.4 类...

    在自定义spring aop中使用el获取拦截方法的变量值。

    通过`MethodSignature`,我们可以获取到方法的`Method`对象,从而可以通过反射获取方法的局部变量。 EL的使用需要`WebApplicationContext`,因为EL解析器在Spring MVC环境中是默认启用的。如果在非Web环境下,如...

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

    Java 通过反射创建对象并调用方法 Java 通过反射创建对象并调用方法是 Java programming 语言中的一种高级技术,允许开发者在运行时动态地创建对象和调用方法。这种技术广泛应用于 Java 框架和库的开发中,例如 ...

    动态初始化类+参数泛型化+统一返回值.zip

    泛型是Java 5引入的一个重要特性,它允许我们在类、接口和方法中使用类型参数,以增强类型安全并减少强制类型转换。参数泛型化允许我们定义通用的容器类,比如ArrayList和HashMap,它们可以容纳任何类型的元素。...

    java反射之动态代理

    Java反射是Java语言提供的一种强大的能力,允许程序在运行时检查和操作类、接口、字段以及方法等。这种技术在动态代理中尤为重要,因为它使得在程序执行期间能够创建和操作对象,而无需在编译时知道确切的类信息。...

    JAVA反射列子

    对于方法,可以使用`getParameterTypes()`获取其参数类型,以及`getReturnType()`获取其返回值类型。例如,`for (Class c2 : m.getParameterTypes()) { System.out.println(c2.getName()); }`将打印出方法`m`的所有...

Global site tag (gtag.js) - Google Analytics