static
elementy członkowskie ( static
pola lub static
metody) w Javie są skojarzone z odpowiednimi klasami, a nie z obiektami tej klasy. Poniższy kod próbuje uzyskać dostęp do pola statycznego w null
odwołaniu.
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);
}
}
Chociaż main.getNull()
zwraca null
, działa i wyświetla value = 10
. Jak działa ten kod?
Main main = null; main.getNull().value
.
new Thread[]{}[-1].sleep(10);
gdzie sleep () jest metodą statyczną. Kiedyś działało to pomyślnie w niektórych starszych wersjach Java.