使用静态方法的泛型

sun*_*leo 2 java generics

如何在没有任何Exceptoin的情况下工作?因为在这种情况下T必须相同,但是一个是String另一个ArrayList<Integer>.

public static void main(String[] args) {
    Serializable s = pick("d", new ArrayList<Integer>());   
    System.out.println("s:"+s);
}
static <T> T pick(T a1, T a2) {
    return a2;
}
Run Code Online (Sandbox Code Playgroud)

rge*_*man 7

编译器使用类型推断来确定类型T.它选择适用于所有类型的最具体类型.在这里,类型sSerializable的,你在一传StringArrayList<Integer>.这两个StringArrayListSerializable,没有其他关系,所以推断出的类型TSerializable.