Spec-Zone.ru › OpenJDK 21

Интерфейс Location

Все суперинтерфейсы:
Comparable<Location>, Mirror
public interface Location extends Mirror, Comparable<Location>
Точка в выполняемом коде целевой виртуальной машины. Локации используются для идентификации текущего положения приостановленного потока (аналогично указателю инструкции или регистру счетчика команд в программах нативных языках). Они также используются для определения позиции, в которой нужно установить точку останова.

Доступность номера строки для локации зависит от уровня отладочной информации, доступной от целевой виртуальной машины.

Несколько зеркальных интерфейсов имеют локации. Каждый такой интерфейс расширяет интерфейс Locatable.

Слои

Информация о коде для Location зависит от слоя, который используется. Слой — это уровень исходного кода в последовательности переводов. Например, скажем, программа baz написана на языке программирования "Foo", затем переведена на язык "Bar" и, наконец, переведена на язык программирования Java. Слой языка программирования Java называется "Java", скажем, другие слои называются "Foo" и "Bar". Данная локация (как она отображается методами sourceName() и lineNumber()) может быть на строке 14 файла "baz.foo" в слое "Foo" , на строке 23 файла "baz.bar" в слое "Bar" и на строке 71 файла "Java" слоя. Обратите внимание, что хотя язык программирования Java может иметь только один исходный файл для ссылочного типа, это ограничение не распространяется на другие слои — таким образом, для определения пути к исходному коду необходимо обращаться к каждой Location. Запросы, которые не указывают слой (sourceName(), sourcePath() и lineNumber()) используют значение по умолчанию виртуальной машины (VirtualMachine.getDefaultStratum()). Если указанный слой (явный параметр метода или неявный по умолчанию VM) равен null или недоступен в объявляемом типе, используется слой по умолчанию объявляемого типа (declaringType().defaultStratum()). Обратите внимание, что в обычном случае для кода, исходно написанного на языке программирования Java, будет только один слой ("Java") и он будет возвращён как значение по умолчанию. Для определения доступных слоёв используйте ReferenceType.availableStrata().

С момента:
1.3
См. также:
  • EventRequestManager
  • StackFrame
  • BreakpointEvent
  • ExceptionEvent
  • Locatable

Краткое описание методов

Модификатор и тип Метод Описание
long codeIndex()
Получение позиции кода в методе данной локации.
ReferenceType declaringType()
Получение типа, к которому принадлежит данная Location.
boolean equals(Object obj)
Сравнение указанного объекта с данной Location на равенство.
int hashCode()
Возвращает значение хэш-кода для данной Location.
int lineNumber()
Получение номера строки данной Location.
int lineNumber(String stratum)
Номер строки данной Location.
Method method()
Получение метода, содержащего данную Location.
String sourceName()
Получение идентифицирующего имени источника, соответствующего данной локации.
String sourceName(String stratum)
Получение идентифицирующего имени источника, соответствующего данной локации.
String sourcePath()
Получение пути к источнику, соответствующему данной локации.
String sourcePath(String stratum)
Получение пути к источнику, соответствующему данной локации.

Методы, объявленные в интерфейсе java.lang.Comparable

compareTo

Методы, объявленные в интерфейсе com.sun.jdi.Mirror

toString, virtualMachine

Подробное описание методов

declaringType

ReferenceType declaringType()
Получает тип, к которому относится данная Location. Обычно декларирующий тип — это ClassType, но исполняемые локации также могут существовать внутри статического инициализатора InterfaceType.
Возвращает:
the ReferenceType содержащий эту Location.

method

Method method()
Получает метод, содержащий эту Location.
Возвращает:
the location's Method.

codeIndex

long codeIndex()
Получает позицию кода в методе этой локации.
Возвращает:
long, представляющий позицию внутри метода, или -1, если местоположение находится в нативном методе.

sourceName

String sourceName() throws AbsentInformationException
Получает идентифицирующее имя источника, соответствующего этому местоположению.

Этот метод эквивалентен sourceName(vm.getDefaultStratum()) - см. sourceName(String) для получения дополнительной информации.

Возвращает:
строку, определяющую источник
Исключение:
AbsentInformationException - если имя источника неизвестно

sourceName

String sourceName(String stratum) throws AbsentInformationException
Получает идентифицирующее имя источника, соответствующего этому местоположению. Интерпретация этой строки лежит на ответственности механизма хранения исходного кода.

Возвращённое имя предназначено для указанного слоя (см. class comment для описания слоёв).

Возвращаемая строка — это неопределённое имя файла источника для этой Location. Например, java.lang.Thread вернёт "Thread.java".

Параметры:
stratum - Слой для извлечения информации или null для стандартного слоя декларируемого типа.
Возвращает:
строку, определяющую источник
Исключение:
AbsentInformationException - если имя источника неизвестно
С тех пор:
1.4

sourcePath

String sourcePath() throws AbsentInformationException
Получает путь к источнику, соответствующему этому местоположению.

Этот метод эквивалентен sourcePath(vm.getDefaultStratum()) - см. sourcePath(String) для получения дополнительной информации.

Возвращает:
строку, определяющую источник
Исключение:
AbsentInformationException - если имя источника неизвестно

sourcePath

String sourcePath(String stratum) throws AbsentInformationException
Получает путь к источнику, соответствующему этому местоположению. Интерпретация этой строки лежит на ответственности механизма хранения исходного кода.

Возвращаемый путь предназначен для указанного слоя (см. class comment для описания слоёв).

В реализации по умолчанию, для слоёв, которые не явно указывают путь к источнику (слой Java никогда не делает этого), возвращаемая строка — это имя пакета declaringType(), преобразованное в платформенно-зависимый путь, за которым следует неопределённое имя файла источника для этой Location (sourceName(stratum)). Например, на платформе Windows, java.lang.Thread вернёт "java\lang\Thread.java".

Параметры:
stratum - Слой для извлечения информации или null для стандартного слоя декларируемого типа.
Возвращает:
строку, определяющую источник
Исключение:
AbsentInformationException - если имя источника неизвестно
С тех пор:
1.4

lineNumber

int lineNumber()
Получает номер строки этой Location.

Этот метод эквивалентен lineNumber(vm.getDefaultStratum()) - см. lineNumber(String) для получения дополнительной информации.

Возвращает:
целое число, определяющее строку в исходном коде, возвращает -1, если информация недоступна; конкретно, всегда возвращает -1 для нативных методов.

lineNumber

int lineNumber(String stratum)
Номер строки этой Location. Номер строки относительный к источнику, указанному в sourceName(stratum).

Возвращаемый номер строки относится к указанному слою (см. class comment для описания слоёв).

Параметры:
stratum - Слой для извлечения информации или null для стандартного слоя декларируемого типа.
Возвращает:
целое число, определяющее строку в исходном коде, возвращает -1, если информация недоступна; конкретно, всегда возвращает -1 для нативных методов.
С тех пор:
1.4

equals

boolean equals(Object obj)
Сравнивает указанный объект с этой Location на равенство.
Переопределяет:
equals в классе Object
Параметры:
obj - объект-ссылка для сравнения.
Возвращает:
true, если объект является Location и ссылается на ту же точку в той же VM, что и эта Location.
См. также:
  • Object.hashCode()
  • HashMap

hashCode

int hashCode()
Возвращает значение хэш-кода для этой Location.
Переопределяет:
hashCode в классе Object
Возвращает:
целое значение хэш-кода
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/jdk.jdi/com/sun/jdi/Location.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API