Java getDeclaredMethod()parameterTypes用于字符串参数

时间:2016-09-29 07:34:40

标签: java string

我有一个简单的问题。我希望在String.TYPE中将parameterType设为getDeclaredMethod(),但我找不到它。例如,对于Long数据类型有Long.TYPE但是没有类似于String的任何内容类型。 有人可以帮我这个吗? 感谢

Object newClass;
newClass = Class.forName(cls.getName()).getConstructor().newInstance();
           for (Method m : cls.getClass().getMethods())
                if (m.getName().startsWith("get") && m.getParameterTypes().length == 0) {
                    try {
                        //final Object r = m.invoke(cls);
                        String MethodName=m.getName().replace("get","");

                        if (m.getReturnType().equals(Long.TYPE)){
                        //    Class<?> c = Class.forName("class name");

                        }else
                        {
                            String value =this.getString(j,MethodName);
                            Method  method = cls.getDeclaredMethod (MethodName, String);//Here I need Parameter Type for string imput parameter
                            method.invoke (newClass, value);
                        }


                    } catch (IllegalAccessException e) {
                        e.printStackTrace();
                    } catch (InvocationTargetException e) {
                        e.printStackTrace();
                    }
                    // do your thing with r
                }

3 个答案:

答案 0 :(得分:1)

Long.TYPE适用于基本类型long

对于String这样的引用类型没有这样的东西。

你想要String.class。 (Long.class将用于盒装类型Long)。

答案 1 :(得分:1)

如何使用String.class ??

答案 2 :(得分:1)

检查一下。它工作正常。

Test obj = new Test();
        for (Method m : obj.getClass().getDeclaredMethods()){
            if (m.getName().startsWith("get") && m.getParameterTypes().length == 1) {
                System.out.println("==="+m.getName());
                if (m.getReturnType().equals(String.class)) {
                    String value = "ABCD";
                    Method  method = Test.class.getDeclaredMethod (m.getName(), String.class);
                    method.invoke (obj, value);
                }
            }
        }