Когда в Java происходит проверка типов

У меня есть вопрос в моем домашнем задании, который выглядит так.

Какой из следующих процессов происходит ТОЛЬКО во время компиляции в Java?

(i) вывод типа - вывод типа переменной, тип которой не указан. (ii) стирание типа - замена параметра типа дженериков либо на объект, либо на его привязку. (iii) проверка типа – проверка, соответствует ли значение типу переменной, которой оно присвоено.

А. Только (я)
B. Только (i) и (ii)
C. Только (i) и (iii)
D. Только (ii) и (iii)
E. (i), (ii) и (iii)

Насколько я понимаю, Java выполняет проверки типов для дженериков только во время компиляции, поэтому (i) и (ii) определенно верны. Однако я не уверен в проверке типов, и из представленного описания не похоже, что проверка типов не ограничивается дженериками, но и другими вещами.

Ответом на этот вопрос является B, но объяснение не было дано. Тогда мне было интересно, когда происходит проверка типов? Если это происходит не только во время компиляции, происходит ли это и во время компиляции, и во время выполнения, или только во время выполнения, и почему?

Проверка типов происходит во время выполнения и во время компиляции. Заданный вопрос, для которого происходит ТОЛЬКО во время компиляции. Проверка типов — это и то, и другое.

markspace 24.04.2019 20:47

@markspace Можете ли вы показать пример, в котором проверка типов происходит во время выполнения?

Code-Apprentice 24.04.2019 21:29

@Code-Apprentice Примером может быть приведение к подтипу

LuKenneth 25.04.2019 22:31
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
6
3
1 537
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это также происходит во время выполнения, потому что вы можете приводить объекты к их подтипам. Вы можете вручную заставить его снова выполнять проверку типов в любой момент с помощью случай.

You see Java is not a completely statically typed language. Whenever you cast an object from a type to a subtype, the JVM performs a dynamic (runtime) typecheck to check that the object really is an instance of the subtype. Using instanceof is another example of dynamic type checking.

из этого отвечать

Другие вопросы по теме