static
члени ( static
поля або static
методи) в Java асоціюються з відповідним класом, а не з об'єктами цього класу. Наступний код намагається отримати доступ до статичного поля за null
посиланням.
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);
}
}
Хоча main.getNull()
повертається null
, він працює і відображається value = 10
. Як працює цей код?
Main main = null; main.getNull().value
.
new Thread[]{}[-1].sleep(10);
де сон () є статичним методом. Це вдалося досягти успіху в деяких старих версіях Java.