在选择正确的重载方法时,Java 通常更喜欢普通方法而不是泛型方法,这可能会生成以下sscce:
public class GenericsTest {
public static void main(String[] args) {
myMethod(Integer.class, 10);
myMethod(String.class, "overloaded method");
}
public static <T> void myMethod(Class<T> klass, T foo) {
System.out.println("hello world");
}
public static <T> void myMethod(Class<T> klass, String bar) {
System.out.println(bar);
}
}
输出:
hello world
overloaded method
有没有办法强制 Java 使用通用版本?