Llamar a un método usando nulo en Java

Requisito previo: nulo en Java , Estático en Java

¿Puedes predecir la salida del siguiente programa?
Antes de responder, observe el hecho de que en el código dado, fun() es un miembro estático que pertenece a la clase y no a ninguna instancia.

// Java program to illustrate calling
// static method using Null
public class GFG {
    public static void fun()
    {
        System.out.println("Welcome to GeeksforGeeks!!");
    }
  
    public static void main(String[] args)
    {
        ((GFG)null).fun();
    }
}

Producción:

Welcome to GeeksforGeeks!!

Explicación:
parece que este programa debe generar una NullPointerException. Sin embargo, el método principal invoca el método de saludo (divertido) en el nulo constante, y no puede invocar un método en nulo.
Pero, cuando ejecuta el programa, imprime «¡¡Bienvenido a GeeksforGeeks!!». Veamos cómo:

  • La clave para entender este rompecabezas es que GFG.fun es un método estático .
  • Aunque es una mala idea usar una expresión como calificador en una invocación de método estático, pero eso es exactamente lo que hace este programa.
  • No solo el tipo de tiempo de ejecución del objeto al que hace referencia el valor de la expresión no juega ningún papel en la determinación de qué método se invoca, sino que tampoco juega ningún papel la identidad del objeto, si la hay .
  • En este caso, no hay ningún objeto, pero eso no hace ninguna diferencia. Se evalúa una expresión de calificación para una invocación de método estático, pero se ignora su valor. No hay ningún requisito de que el valor no sea nulo.

Este artículo es una contribución de Shubham Juneja . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. 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 tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *