2016-09-29 19 views
0

私は簡単な質問があります。 String.TYPEparameterTypeとしてgetDeclaredMethod()にしたいが、見つけられない。例えば、長いデータ型の場合はLong.TYPEだが、文字列型の場合は似ていない。 これについて何人か助けてもらえますか? おかげJava getDeclaredMethod()パラメータ文字列パラメータの型

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 
       } 
+0

私は使用することをお勧めします。あなたは.TYPEに入る必要はありません。 – cody123

答えて

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); 
       } 
      } 
     } 
1

Long.TYPEは、プリミティブ型longためです。

Stringなどの参照型にはこのようなことはありません。

あなたはString.classが必要です。 (Long.classはボックスタイプの場合になりますLong)。

関連する問題