Java泛型中的自动装箱和类型检测

我有以下代码:

List<Integer> ints = Arrays.asList(1,2,3,4);

asList,在java.util.Arrays中定义为:

public static <T> List<T> asList(T... a) {
    return new ArrayList<>(a);
}

而AaaryList构造函数定义为:

ArrayList(E[] array) {
    a = Objects.requireNonNull(array);
}

我希望能找到一些用于自动装箱的代码,以及一些确定传递给asList方法的元素类型的代码,因为我们可以将任何类型传递给asList,但是那里没有这样的代码。

因此,所有这种类型的检测,自动装箱等在整个方案中如何发生。