为什么java在将字符串的arraylist对象传递给泛型方法时推断序列化

use*_*253 3 java

  1. static <T> T pick(T a1, T a2) { return a2; }
  2. Serializable s = pick("d", new ArrayList<String>());

如果我正在引用String或任何其他类型.编译器抛出错误.

你能帮我理解为什么java推断它为Serializable?

Erw*_*idt 8

  • 作为论点a1,你传递的"d"是类型String.
  • 作为论点a2,你传递的new ArrayList<String>()是类型ArrayList<String>

最接近的String和ArrayList的常见超类型是Serializable.如果你写了它也会工作:

Object s = pick("d", new ArrayList<String>());
Run Code Online (Sandbox Code Playgroud)