static
Mitglieder ( static
Felder oder static
Methoden) in Java sind eher ihrer jeweiligen Klasse als den Objekten dieser Klasse zugeordnet. Der folgende Code versucht, auf ein statisches Feld in einer null
Referenz zuzugreifen .
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);
}
}
Obwohl main.getNull()
zurückgegeben null
, funktioniert es und wird angezeigt value = 10
. Wie funktioniert dieser Code?
Main main = null; main.getNull().value
.
new Thread[]{}[-1].sleep(10);
wo sleep () eine statische Methode ist. Dies war früher bei einigen älteren Java-Versionen erfolgreich.