3

メソッド「themethod」が「foo」を参照するようにするには、静的ブロックで「getMethod」を使用してメソッド「foo」を取得しようとします。メソッドの名前とパラメーターのタイプを渡しますが、「foo」 「パラメーターとしてジェネリック型を受け取ると、仕事に与えてはいけないことがわかります。コード:

public class Clazz<T> 
{
   static Method theMethod;

   static 
   {
      try
      {
         Class<Clazz> c = Clazz.class;
         theMethod = c.getMethod( "foo", T.class ); // "T.class" Don't work! 
      }
      catch ( Exception e )
      {
      }
   }
   public static <T> void foo ( T element ) 
   {
       // do something
   } 
}

「foo」というメソッドを参照する「theMethod」を作成するにはどうすればよいですか?

4

2 に答える 2

0

このようなもの?

import java.lang.reflect.Method

public class Clazz<T> 
{
    static Method theMethod;
    static Class<T> type;

    public Clazz(Class<T> type) {
      this.type = type;
      this.theMethod = type.getMethod("toString");
    }
}

System.out.println(new Clazz(String.class).theMethod);

与える

public java.lang.String java.lang.String.toString()
于 2013-11-12T03:27:40.563 に答える
0

これはほとんどの場合に機能するはずです。

public class Clazz<T> {

    static Method theMethod;

    static {
        try {
            Class<Clazz> c = Clazz.class;
            theMethod = c.getDeclaredMethod("foo", Object.class);
        } catch(Exception e) {}
    }

    public static <T> void foo(T element) {
        // do whatever
    }
}
于 2016-03-31T18:34:21.803 に答える