我的作业中有一个这样的问题。
以下哪个过程仅在Java编译期间发生?
(i)类型推断–推断未指定类型的变量的类型。
(ii)类型擦除–用Object或其边界替换泛型的类型参数。
(iii)类型检查–检查该值是否与为其分配的变量的类型匹配。
A.仅(i)
B.仅(i)和(ii)
C.仅(i)和(iii)
D.仅(ii)和(iii)
E.(i),(ii)和(iii)
据我了解,Java仅在编译时对泛型进行类型检查,因此(i)和(ii)绝对正确。但是,我不确定类型检查,从提供的描述来看,类型检查似乎并不限于泛型,还包括其他方面。
这个问题的解决方案是B,但是没有给出解释。我当时在想,什么时候进行类型检查?如果它不仅在编译时发生,还是在编译时和运行时都发生,还是仅在运行时发生,为什么?