Использует ли сам объект Object.getClass () Reflection? - PullRequest
0 голосов
/ 10 июня 2018

Насколько я понимаю, java.lang.Class является " точкой входа для всех операций отражения ".Я также понимаю, что когда вы создаете экземпляр нового объекта, он загружает класс объекта, если это необходимо в первый раз.

Something something = new Something() 

Использует ли при вызове Object.getClass(), или в нашем случае something.getclass(), отражение, или это только методы внутри самого класса, использующие отражение?

Я думаю, что something.getClass() не использует отражение из-за того, что ссылка на класс загружена, и getClass будет просто средством получения этой ссылки, но я просто хочу убедиться.

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Проверка окончательного источника для определения отражения Java, Спецификация языка Java , раздел 1.4. Отношение к предопределенным классам и интерфейсам , просто говорит:

Следовательно, эта спецификация не описывает отражение в любых деталях.Многие лингвистические конструкции имеют аналоги в Core Reflection API (java.lang.reflect) и API языковой модели (javax.lang.model), но они обычно здесь не обсуждаются.

Виртуальная машина Java Спецификация , раздел 2.12. Библиотеки классов , говорит:

Классы, которые могут требовать специальной поддержки от виртуальной машины Java, включают в себя классы, которые поддерживают:

  • Отражение, напримерклассы в пакете java.lang.reflect и класс Class.

Итак, вы используете отражение, если вы:

Обратите внимание, что объект Class, возвращаемый getClass(), фактически не существует, пока выназовите это в первый раз.Классы внутренне хранятся по-разному, и такие операции, как instanceof, функционируют без необходимости создавать экземпляр более тяжелого Class объекта по соображениям производительности.

0 голосов
/ 10 июня 2018

Согласно определению в Википедии:

В компьютерных науках рефлексия - это способность компьютерной программы исследовать, анализировать и изменять свою собственную структуру и поведение во время выполнения.

С этой точки зрения Object.getClass() является отражением как таковым, поскольку его можно использовать для исследования данного объекта.

...