当我不知道泛型类型时,如何将其传递给方法?
public static class ExecContext<E> {
public void doSomething(E e) {
System.out.println(e);
}
}
public static void exec(ExecContext<?> ctx) {
String s = new String("saoj");
ctx.doSomething(s); // <============== COMPILE ERROR
}
最佳答案
public static <T> void exec(ExecContext<T> ctx)
应该这样做。
编辑:
这应该可以做到。。。但是,您的操作方式略有变化:
public class Main
{
public static void main(String[] args)
{
final ExecContext<String> stringCtx;
final ExecContext<Integer> integerCtx;
stringCtx = new ExecContext<String>();
integerCtx = new ExecContext<Integer>();
exec(stringCtx, "Hello, World");
exec(integerCtx, 42);
}
public static class ExecContext<T>
{
public void doSomething(final T e)
{
System.out.println(e);
}
}
public static <T> void exec(final ExecContext<T> ctx,
final T value)
{
ctx.doSomething(value);
}
}