Предположим, у классов есть код, подобный следующему:
class C {
public static void show() {
}
}
class CTest {
public static void main (String[] args) {
C.show();
}
}
Тогда будет совершенно законно сделать вывод, что при обращении к классу C
для доступа к статическому методу show()
здесь, за сценой Javaна самом деле вызывает show()
метод через отражение Java?
Т.е. действительно ли он делает что-то подобное
Class test = Class.forName(C);
test.show();
для вызова статических методов?
Если нет, то как на самом деле он вызывает статические методы без создания объектов?
Если приведенное выше объяснение верно, то как мы оправдаем утверждение, что «статические члены связаны только с классами, а не объектами», когда мы фактически вызываем метод через java.lang.Class
объект?