Ну, это совершенно нормально. Статический метод не доступен экземпляру объекта класса A. Либо вы вызываете его по имени класса, либо по ссылке, компилятор будет вызывать его через экземпляр класса java.lang.Class.
К вашему сведению, каждый класс (CallingStaticMethod на рисунке выше) в java является экземпляром класса java.lang.Class. И всякий раз, когда вы определяете класс, экземпляр создается как java.lang.Class CallingStaticMethod = new java.lang.Class ();
Таким образом, метод вызывается для CallingStaticMethod, и исключение нулевого указателя не произойдет.
Надеюсь, это поможет.