Excepción de puntero nulo es una RuntimeException. En Java, se puede asignar un valor nulo especial a una referencia de objeto. Se lanza NullPointerException cuando el programa intenta utilizar una referencia de objeto que tiene el valor nulo.
Estos pueden ser:
- Invocar un método de un objeto nulo.
- Acceder o modificar el campo de un objeto nulo.
- Tomando la longitud de nulo, como si fuera una matriz.
- Acceder o modificar las ranuras de un objeto nulo, como si se tratara de una matriz.
- Lanzar nulo, como si fuera un valor Throwable.
- Cuando intenta sincronizar sobre un objeto nulo.
¿Por qué necesitamos el valor nulo?
Null es un valor especial utilizado en Java. Se utiliza principalmente para indicar que no se asigna ningún valor a una variable de referencia. Una aplicación de null es la implementación de estructuras de datos como la lista y el árbol vinculados. Otras aplicaciones incluyen el patrón de objeto nulo (consulte esta para más detalles) y patrón Singleton. El patrón Singleton garantiza que solo se cree una instancia de una clase y también tiene como objetivo proporcionar un punto global de acceso al objeto.
Una forma de muestra de crear como máximo una instancia de una clase es declarar todos sus constructores como privados y luego, crear un método público que devuelva la instancia única de la clase:
|
Producción:
10099197-8c2d-4638-9371-e88c820a9af2
En el ejemplo anterior, una instancia estática de la clase singleton. Esa instancia se inicializa como máximo una vez dentro del método getInstance de Singleton.
¿Cómo evitar la NullPointerException?
Para evitar la NullPointerException, debemos asegurarnos de que todos los objetos se inicialicen correctamente antes de usarlos. Cuando declaramos una variable de referencia, debemos verificar que el objeto no sea nulo, antes de solicitar un método o un campo de los objetos.
A continuación se presentan los problemas comunes con la solución para superar ese problema.
Caso 1: comparación de cadenas con literales
Un problema de caso muy común implica la comparación entre una variable de cadena y un literal. El literal puede ser una cadena o un elemento de una enumeración. En lugar de invocar el método desde el objeto nulo, considere la posibilidad de invocarlo desde el literal.
|
Producción:
NullPointerException Caught
Podemos evitar NullPointerException llamando a equals en literal en lugar de en un objeto.
|
Producción:
Not Same
Caso 2: Controlar los argumentos de un método
Antes de ejecutar el cuerpo de su nuevo método, primero debemos verificar sus argumentos en busca de valores nulos y continuar con la ejecución del método, solo cuando los argumentos estén correctamente verificados. De lo contrario, arrojará un Argumento de excepción ilegal y notifica al método de llamada que algo anda mal con los argumentos pasados.
|
Producción:
0 13 IllegalArgumentException caught
Caso 3: Uso de operador ternario
El operador ternario se puede utilizar para evitar NullPointerException. Primero, se evalúa la expresión booleana. Si la expresion es cierto luego, se devuelve el valor1; de lo contrario, se devuelve el valor2. Podemos usar el operador ternario para manejar punteros nulos:
|
Producción:
Geeks
La variable de mensaje estará vacía si la referencia de str es nulo como en el caso 1. De lo contrario, si str apunta a Información actual, el mensaje recuperará los primeros 6 caracteres como en el caso 2.
Artículo relacionado – Datos interesantes sobre Null en Java
Este artículo es una contribución de Nikhil Meherwal. Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando contrib.geeksforgeeks.org o envíe su artículo por correo electrónico a [email protected] Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema discutido anteriormente.
¡Atención lector! No dejes de aprender ahora. Hazte con todo lo importante Fundación Java y conceptos de colecciones con el Curso de Fundamentos de Java y Colecciones de Java a un precio asequible para los estudiantes y prepárese para la industria. Para completar su preparación desde el aprendizaje de un idioma hasta DS Algo y muchos más, consulte Curso completo de preparación para entrevistas.