static
i membri ( static
campi o static
metodi) in Java sono associati alla rispettiva classe piuttosto che agli oggetti di questa classe. Il codice seguente tenta di accedere a un campo statico su un null
riferimento.
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);
}
}
Sebbene main.getNull()
ritorni null
, funziona e viene visualizzato value = 10
. Come funziona questo codice?
Main main = null; main.getNull().value
.
new Thread[]{}[-1].sleep(10);
dove sleep () è un metodo statico. Questo ha avuto successo su alcune versioni precedenti di Java.