У меня есть вопрос в моей домашней работе, который выглядит следующим образом.
Какой из следующих процессов происходит ТОЛЬКО во время компиляции в Java?
(i) вывод типа - вывод типа переменной, тип которой не указан.
(ii) стирание типа - замена параметра типа обобщенного типа либо объектом, либо его границей.
(iii) проверка типа - проверка, соответствует ли значение типу переменной, которой оно присвоено.
A. Только (я)
B. Только (i) и (ii)
C. Только (i) и (iii)
D. Только (ii) и (iii)
E. (i), (ii) и (iii)
Насколько я понимаю, Java выполняет проверки типов для обобщений только во время компиляции, поэтому (i) и (ii) определенно верны. Тем не менее, я не уверен в проверке типов, и из предоставленного описания не похоже, что проверка типов не ограничивается обобщениями, но также и другими вещами.
Решением этого вопроса является В, но объяснений не было. Мне было интересно, когда происходит проверка типов? Если это происходит не только во время компиляции, это происходит как во время компиляции, так и во время выполнения или только во время выполнения, и почему?