staticmembros ( staticcampos ou staticmétodos) em Java são associados a suas respectivas classes, e não aos objetos dessa classe. O código a seguir tenta acessar um campo estático em uma nullreferência.
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);
}
}
Embora main.getNull()retorne null, ele funciona e exibe value = 10. Como funciona esse código?
Main main = null; main.getNull().value.
new Thread[]{}[-1].sleep(10);onde sleep () é um método estático. Isso costumava ser bem-sucedido em algumas versões anteriores do Java.