Что происходит, когда статический метод вызывается с помощью ссылки несуществующего объекта?

public class CallingStaticMethod {
public static void method() {
    System.out.println("I am in method");
}
public static void main(String[] args) {
    CallingStaticMethod csm = null;
    csm.method();
   }
}

Кто-то может объяснить, как статический метод вызывается в вышеупомянутом коде?

12
задан Michael Myers 8 February 2010 в 17:59
поделиться

2 ответа

Компилятор оптимизировал его просто потому, что наличие экземпляра класса не обязательно. Компилятор в основном заменяет

csm.method();

на

CallingStaticMethod.method();

Это в общем и целом хорошая практика сделать это самостоятельно. Даже средняя IDE предупредила бы о доступе к статическим методам через экземпляр, как минимум Eclipse делает это здесь.

22
ответ дан 2 December 2019 в 05:54
поделиться

Java позволяет использовать экземпляр класса для вызова статических методов, но не следует путать это разрешение, как если бы метод был вызван в экземпляре, используемом для его вызова.

instance.method ();

совпадает с

Class.method ();

3
ответ дан 2 December 2019 в 05:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: