Les voy a mostrar un pequeño truco en Java. ¿Cual es la salida del siguiente código?
package com.kodegeek;
public class StaticWeird {
public static int count = 0;
public static void print() {
System.out.println(++count);
}
/**
* What is the output?
* @param args
*/
public static void main(String [] args) {
StaticWeird weird = new StaticWeird();
weird.print();
weird = null; // Magic hat trick
weird.print(); // Expecting an NPE :-)?
}
}
No es “NullPointerException”. Java sabe que la referencia al método es estática (static) y utiliza esa en vez de una referencia a la instancia de la clase.
¡Java tramposo! 🙂