Я просто обсуждал вопрос о вызове статических методов, используя имя класса, с моим другом, и попробовал этот код и ожидал, что он выбросит NPE в runtime.but, как оказалось, это не так. я просто хочу понять порядок выполнения.
public class One {
public static void method() {
System.out.println("in static one");
}
}
public class Two {
static One o;
public static void main(String[] args) {
o.method(); // expected NPE here, as o is null
}
}
Я знаю, что статические методы должны быть вызваны с их именем класса, я даже знаю, что IDE даст предупреждение компилятора, когда мы вызываем статические методы с экземпляром. но мы могли бы также вызвать их, создав экземпляр, однако я никогда не создавал экземпляр здесь, o
должен получить значение по умолчанию null, поэтому вызов o.method()
должен вызывать NPE во время выполнения, но это не так. можете ли вы, ребята, пролить свет на то, как порядок выполнения находится в этом коде.