static
los miembros ( static
campos o static
métodos) en Java están asociados con su clase respectiva en lugar de los objetos de esta clase. El siguiente código intenta acceder a un campo estático en una null
referencia.
public class Main
{
private static final int value = 10;
public Main getNull()
{
return null;
}
public static void main(String[] args)
{
Main main=new Main();
System.out.println("value = "+main.getNull().value);
}
}
Aunque main.getNull()
vuelve null
, funciona y se muestra value = 10
. ¿Cómo funciona este código?
Main main = null; main.getNull().value
.
new Thread[]{}[-1].sleep(10);
dónde sleep () es un método estático. Esto solía tener éxito en algunas versiones anteriores de Java.