Variables y miembros no inicializados en Java
Considere el siguiente fragmento de código:
public class TestClass { private String a; private String b; public TestClass() { a = "initialized"; } public void doSomething() { String c; a.notify(); // This is fine b.notify(); // This is fine - but will end in an exception c.notify(); // "Local variable c may not have been initialized" } }
Aunque tanto "b" como "c" no están inicializados, el compilador genera un error en tiempo de compilación para "c" pero no para "b". Esta diferencia surge de las reglas del lenguaje para inicializar variables de instancia y variables locales.
Las variables de instancia de tipo de objeto (como "a" y "b") se inicializan de forma predeterminada en nulo cuando no se inicializan explícitamente. Es por eso que acceder a "b.notify()" no genera un error inmediato, ya que es efectivamente equivalente a "null.notify()". Sin embargo, este acceso finalmente desencadenará una NullPointerException cuando se ejecute el código.
Por el contrario, las variables locales de tipo de objeto no se inicializan de forma predeterminada. Intentar acceder a una variable local no inicializada, como "c", genera directamente un error en tiempo de compilación. Este requisito estricto garantiza que las variables locales siempre se inicialicen correctamente antes de usarse.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3