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);
sleep () - статический метод. Раньше это было успешным в некоторых старых версиях Java.