使用反射从动态方法获取参数类型

瑞安

我有一些代码可以从动态类中获取setter方法。但是参数可以是ajava.lang.Stringjava.lang.Long如何动态获取参数类型?

public Method getDynMethod(Class aClass, String methodName) {
    Method m = null;
    Class[] paramTypes = new Class[1];
    paramTypes[0] = String.class;
    try {
        m = aClass.getMethod(methodName, paramTypes);
    } catch (NoSuchMethodException nsme) {
        nsme.printStackTrace();
    }
    return m;
}

这是调用它的代码

Class c = getDynClass(a.getAssetType().getDBTableName());
        for (Long l : map.keySet()) {
            AssetProperties ap = new AssetProperties();
            ap.setAssetTypeProperties(em.find(AssetTypeProperty.class, l));
            ap.setAssets(a);
            ap.setValue(map.get(l));
            a.getAssetProperties().add(ap);
            String methodName = "set" + ap.getAssetTypeProperties().getDBColumn();
            Method m = getDynMethod(c, methodName);
            try {
                String result = (String) m.invoke(c.newInstance(), ap.getValue());
                System.out.println(result);
            } catch (IllegalAccessException iae) {
                iae.printStackTrace();
            } catch (InvocationTargetException ite) {
                ite.printStackTrace();
            } catch (InstantiationException ie) {
                ie.printStackTrace();
            }

        }

我可以将另一个参数传递给方法,但是我仍然不知道参数类型是什么

于尔根·文朱(Jurgen Vinju)

您可以获取所有方法,并按名称进行过滤,如下所示:

public Method getDynMethod(Class aClass, String methodName) {
   for (Method m : aClass.getMethods()) {
       if (methodName.equals(m.getName())) {
           Class<?>[] params = m.getParameterTypes();
           if (params.length == 1 
               && (params[0] == Long.class || params[0] == String.class)) {
               return m;
           }
       }
    }

    return null;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用反射从动态(匿名类型)对象获取属性?

来自分类Dev

如何使用反射从动态(匿名类型)对象获取属性?

来自分类Dev

飞镖,如何使用反射获取方法参数的通用类型?

来自分类Dev

使用反射获取具有原始类型参数的类的方法

来自分类Dev

Java反射:获取方法的返回参数的类型

来自分类Dev

如何使用Firebase从动态链接获取额外的参数?

来自分类Dev

在Scala中,如何使用反射获取方法的实参类型的varargs参数

来自分类Dev

如何使用Scala反射查找返回类型参数的方法的类型?

来自分类Dev

如何使用Scala反射查找返回类型参数的方法的类型?

来自分类Dev

从动作调用动态类型的方法

来自分类Dev

使用变量从动态表获取行

来自分类Dev

使用awk从动态位置获取数据

来自分类Dev

仅使用反射通过类型参数区分通用方法?

来自分类Dev

如何使用反射获取以List <SomeObject>作为参数的方法

来自分类Dev

使用有效获取数组参数的反射方法

来自分类Dev

如何使用反射获取以List <SomeObject>作为参数的方法

来自分类Dev

使用有效获取数组参数的反射方法

来自分类Dev

使用Java反射获取方法的类型化返回

来自分类Dev

如何使用反射来动态调用类型?

来自分类Dev

Java反射-检查方法参数类型

来自分类Dev

Delphi在类过程中使用反射来获取动态类类型

来自分类Dev

反射无法获取从泛型接口重写的方法的实际参数类型?

来自分类Dev

使用Java反射时的参数类型

来自分类Dev

使用反射传递Double类型的参数

来自分类Dev

使用反射根据参数类型转换值

来自分类Dev

使用反射根据参数类型转换值

来自分类Dev

如何从动态实现接口的类中获取方法?

来自分类Dev

使用JavaScript从动态对象列表中获取价值

来自分类Dev

使用xpath从动态SOAP响应中获取值

Related 相关文章

  1. 1

    如何使用反射从动态(匿名类型)对象获取属性?

  2. 2

    如何使用反射从动态(匿名类型)对象获取属性?

  3. 3

    飞镖,如何使用反射获取方法参数的通用类型?

  4. 4

    使用反射获取具有原始类型参数的类的方法

  5. 5

    Java反射:获取方法的返回参数的类型

  6. 6

    如何使用Firebase从动态链接获取额外的参数?

  7. 7

    在Scala中,如何使用反射获取方法的实参类型的varargs参数

  8. 8

    如何使用Scala反射查找返回类型参数的方法的类型?

  9. 9

    如何使用Scala反射查找返回类型参数的方法的类型?

  10. 10

    从动作调用动态类型的方法

  11. 11

    使用变量从动态表获取行

  12. 12

    使用awk从动态位置获取数据

  13. 13

    仅使用反射通过类型参数区分通用方法?

  14. 14

    如何使用反射获取以List <SomeObject>作为参数的方法

  15. 15

    使用有效获取数组参数的反射方法

  16. 16

    如何使用反射获取以List <SomeObject>作为参数的方法

  17. 17

    使用有效获取数组参数的反射方法

  18. 18

    使用Java反射获取方法的类型化返回

  19. 19

    如何使用反射来动态调用类型?

  20. 20

    Java反射-检查方法参数类型

  21. 21

    Delphi在类过程中使用反射来获取动态类类型

  22. 22

    反射无法获取从泛型接口重写的方法的实际参数类型?

  23. 23

    使用Java反射时的参数类型

  24. 24

    使用反射传递Double类型的参数

  25. 25

    使用反射根据参数类型转换值

  26. 26

    使用反射根据参数类型转换值

  27. 27

    如何从动态实现接口的类中获取方法?

  28. 28

    使用JavaScript从动态对象列表中获取价值

  29. 29

    使用xpath从动态SOAP响应中获取值

热门标签

归档