我希望我的方法“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
}
}
如何让“theMethod”引用一个名为'foo'的方法?
答案 0 :(得分: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()
答案 1 :(得分: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
}
}