Cuando sucede la verificación de tipos en Java

Meowmi:

Tengo una pregunta en mi tarea que tiene este aspecto.

¿Cuál de los siguiente proceso ocurre sólo durante el tiempo de compilación en Java?

(i) Tipo de inferencia - inferir el tipo de una variable cuyo tipo no se especifica.
(ii) Tipo de borrado - la sustitución de un parámetro de tipo de genéricos, ya sea con objeto o su ligado.
(iii) el tipo de cheques - comprobar si el valor coincide con el tipo de la variable que está asignado.

A. Sólo (i)
B. Sólo (i) y (ii)
C. Sólo (i) y (iii)
D. Sólo (ii) y (iii)
E. (i), (ii), y (iii)

Desde mi entender, Java sólo realiza comprobaciones de tipo para los genéricos durante el tiempo de compilación, por lo tanto, (i) y (ii) son sin duda correcta. Sin embargo, estoy seguro acerca de la comprobación de tipos, ya partir de la descripción proporcionada no parece como la comprobación de tipos no se limita a los genéricos, pero otras cosas también.

La solución a esta pregunta es B, pero no había ninguna explicación dada. Me preguntaba entonces, cuando sucede la verificación de tipos? Si no sólo ocurre durante el tiempo de compilación, qué sucede durante tanto tiempo de compilación y tiempo de ejecución, o sólo durante el tiempo de ejecución, y por qué?

LuKenneth:

También ocurre durante el tiempo de ejecución porque se puede lanzar objetos a sus subtipos. Se podría forzar manualmente para hacer la comprobación de tipos de nuevo en cualquier momento con instanceof .

Ves Java no es un lenguaje completamente estático de tipos. Siempre que lances un objeto de un tipo a un subtipo, la JVM realiza una typecheck dinámica (tiempo de ejecución) para comprobar que el objeto es en realidad una instancia del subtipo. Uso de instanceof es otro ejemplo de comprobación de tipo dinámico.

de esta respuesta

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=175912&siteId=1
Recomendado
Clasificación