Постоянный пул класса имеет символическую ссылку на поля и методы. Имеет ли константный пул класса символические ссылки для методов, определенных только в классе или ссылках методов, определенных в его суперклассе.java constant pool символическая ссылка
ответ
Вы смешиваете ссылки и объявления. Постоянный пул содержит только ссылки методам и полям, поэтому вопрос о том, содержит ли константный пул ссылки на метод , объявленный в суперклассе, не может дать окончательного ответа.
Пул постоянного класса может содержать, ссылаясь на метод суперкласса, если они переданы каким-либо образом, например. если класс вызывает методы суперкласса. Аналогично, постоянный пул классов может содержать ссылки на свои объявленные методы, если они используются внутри. Но если класс не вызывает один из своих собственных методов и не ссылается на него иначе, он не будет ссылаться на него в пуле констант.
Напротив, файл класса содержит список его объявленных методов, включая информацию, такую как их код реализации или аннотации, чьи записи обмениваются информацией с постоянным пулом, но это не, содержащихся в постоянном пуле.
Чтобы быть более конкретным, ссылка метода в пуле констант состоит из двух ссылок на другие записи пула, один из которых указывает класс объявления, а другой - запись типа «name &», снова состоящая из двух ссылок на другой пул записи, указывающие имя метода и подпись типа. Напротив, объявленный метод, явно не требующий указания класса объявления, имеет две прямые ссылки на пул, указав имя и подпись типа.
Так когда класс объявляет метод void foo()
, будет две постоянные записи пула для имени foo
и типа подписи ()V
, что декларация относится. Если класс также имеет ссылку на этот метод, который не является обязательным, также будет запись «name &», указывающая на две записи, описанные выше, и ссылку на ссылку метода, ссылающуюся на запись «имя &» и запись класса, определяющая класс this
как класс объявления.
Резюмируя, постоянный пул может содержать ссылки на методы произвольных классов, в том числе тех, которые объявлены в собственной иерархии классов, но не надо. Список объявленных методов, которые не следует путать с пулом констант, будет содержать только методы, объявленные в этом классе, включая те, которые переопределяют методы суперкласса, но не унаследованные методы.
- 1. Какова цель Java Constant Pool?
- 2. JVM Constant Pool Записи
- 3. String Constant Pool vs String pool
- 4. node_modules: символическая ссылка или не символическая ссылка?
- 5. String Constant Pool и intern
- 6. Нужно ли беспокоиться о String Constant Pool?
- 7. Символическая ссылка: Текущий каталог
- 8. Символическая ссылка perl
- 9. окна символическая ссылка целевой
- 10. ВЬЮТ теги - символическая ссылка
- 11. Символическая ссылка в Makefile
- 12. Код Java для компиляции в MethodHandle в Constant Pool
- 13. Доступ значения из Constant Pool Java байт-код
- 14. Символическая ссылка в репозитории Subversion?
- 15. javalangClassFormatError: Invalid Constant Pool entry Тип 18
- 16. Символическая ссылка не разрешена или ссылка недоступна
- 17. Qt5, символическая ссылка на папку
- 18. Символическая ссылка как реальный файл
- 19. sbcl определить, если символическая ссылка
- 20. Символическая ссылка для Wordpress Theme
- 21. php символическая ссылка для изображений
- 22. PHP Символическая ссылка в пути
- 23. Проверьте, изменилась ли символическая ссылка
- 24. Символическая ссылка исчезает после перезагрузки
- 25. IntelliJ: неверная символическая ссылка scalac
- 26. Символическая ссылка на несуществующий файл
- 27. Что такое ссылка (символическая или нет)
- 28. Где «Hello» будет храниться в String Constant Pool или Heap?
- 29. Типы $ TypeError: bad> символическая ссылка
- 30. String Constant Pool сектор памяти и сбор мусора
Вы прошли через это сообщение? - http://stackoverflow.com/questions/10209952/what-is-the-purpose-of-the-java-constant-pool – JavaHopper
попробуйте "javap -verbose", чтобы увидеть постоянный пул любого класса –
@javahopper I Прошел этот пост, я только начинаю с java, так что собрал столько, сколько смогу. Из сообщения и ссылок я понял, что постоянный пул класса будет иметь только символические ссылки на методы, определенные в этом классе, а не наследованные методы. Просто хочу подтверждение, если мое понимание верное. – cloud