Класс StackTraceElement
- Все реализованные интерфейсы:
Serializable
public final class StackTraceElement extends Object implements Serializable
Throwable.getStackTrace(). Каждый элемент представляет собой отдельный кадр стека. Все кадры стека, кроме самого верхнего, представляют собой вызов метода. Кадр на вершине стека представляет собой точку выполнения, в которой была сгенерирована трассировка стека. Как правило, это точка, в которой был создан исключительный объект, соответствующий трассировке стека.- С тех пор:
- 1.4
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
StackTraceElement |
Создаёт элемент трассировки стека, представляющий указанную точку выполнения. |
StackTraceElement |
Создаёт элемент трассировки стека, представляющий указанную точку выполнения. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Возвращает true, если указанный объект является другим объектом типа StackTraceElement и представляет ту же точку выполнения, что и этот объект. |
String |
getClassLoaderName() |
Возвращает имя загрузчика классов для класса, содержащего точку выполнения, представленную этим элементом трассировки стека. |
String |
getClassName() |
Возвращает полное имя класса, содержащего точку выполнения, представленную этим элементом трассировки стека. |
String |
getFileName() |
Возвращает имя исходного файла, содержащего точку выполнения, представленную этим элементом трассировки стека. |
int |
getLineNumber() |
Возвращает номер строки исходного файла, содержащей точку выполнения, представленную этим элементом трассировки стека. |
String |
getMethodName() |
Возвращает имя метода, содержащего точку выполнения, представленную этим элементом трассировки стека. |
String |
getModuleName() |
Возвращает имя модуля, содержащего точку выполнения, представленную этим элементом трассировки стека. |
String |
getModuleVersion() |
Возвращает версию модуля, содержащего точку выполнения, представленную этим элементом трассировки стека. |
int |
hashCode() |
Возвращает хэш-код для этого элемента трассировки стека. |
boolean |
isNativeMethod() |
Возвращает true, если метод, содержащий точку выполнения, представленную этим элементом трассировки стека, является нативным методом. |
String |
toString() |
Возвращает строковое представление этого элемента трассировки стека. |
Подробное описание конструкторов
StackTraceElement
public StackTraceElement(String declaringClass, String methodName, String fileName, int lineNumber)
module name и module version элемента стека вызовов будут null.- Параметры:
-
declaringClass- полное имя класса, содержащего точку выполнения, представленную элементом стека вызовов -
methodName- имя метода, содержащего точку выполнения, представленную элементом стека вызовов -
fileName- имя файла, содержащего точку выполнения, представленную элементом стека вызовов, илиnullесли эта информация недоступна -
lineNumber- номер строки исходного кода, содержащей точку выполнения, представленную этим элементом стека вызовов, или отрицательное число, если эта информация недоступна. Значение -2 указывает, что метод, содержащий точку выполнения, является нативным методом - Исключения:
-
NullPointerException- еслиdeclaringClassилиmethodNameравно null - С тех пор:
- 1.5
StackTraceElement
public StackTraceElement(String classLoaderName, String moduleName, String moduleVersion, String declaringClass, String methodName, String fileName, int lineNumber)
- Параметры:
-
classLoaderName- имя загрузчика классов, если имя загрузчика классов класса, содержащего точку выполнения, представленную элементом стека вызовов, задано; в противном случаеnull -
moduleName- имя модуля, если класс, содержащий точку выполнения, представленную элементом стека вызовов, находится в именованном модуле; в противном случаеnull -
moduleVersion- версия модуля, если класс, содержащий точку выполнения, представленную элементом стека вызовов, находится в именованном модуле с версией; в противном случаеnull -
declaringClass- полное имя класса, содержащего точку выполнения, представленную элементом стека вызовов -
methodName- имя метода, содержащего точку выполнения, представленную элементом стека вызовов -
fileName- имя файла, содержащего точку выполнения, представленную элементом стека вызовов, илиnullесли эта информация недоступна -
lineNumber- номер строки исходного кода, содержащей точку выполнения, представленную этим элементом стека вызовов, или отрицательное число, если эта информация недоступна. Значение -2 указывает, что метод, содержащий точку выполнения, является нативным методом - Исключения:
-
NullPointerException- еслиdeclaringClassравноnullилиmethodNameравноnull - С тех пор:
- 9
Подробное описание методов
getFileName
public String getFileName()
SourceFile соответствующего файла class (в соответствии с Спецификацией виртуальной машины Java, раздел 4.7.7). В некоторых системах имя может ссылаться на какой-либо блок исходного кода, отличный от файла, например, на запись в системе управления исходным кодом.- Возвращает:
- имя файла, содержащего точку выполнения, представленную этим элементом стека вызовов, или
nullесли эта информация недоступна.
getLineNumber
public int getLineNumber()
LineNumberTable соответствующего файла class (в соответствии с Спецификацией виртуальной машины Java, раздел 4.7.8).- Возвращает:
- номер строки исходного кода, содержащей точку выполнения, представленную этим элементом стека вызовов, или отрицательное число, если эта информация недоступна.
getModuleName
public String getModuleName()
- Возвращает:
- имя модуля
Module, содержащего точку выполнения, представленную этим элементом стека вызовов;nullесли имя модуля недоступно. - С тех пор:
- 9
- См. также:
getModuleVersion
public String getModuleVersion()
- Возвращает:
- версию модуля
Module, содержащего точку выполнения, представленную этим элементом стека вызовов;nullесли версия модуля недоступна. - С тех пор:
- 9
- См. также:
getClassLoaderName
public String getClassLoaderName()
- Возвращает:
- имя загрузчика классов класса, содержащего точку выполнения, представленную этим элементом стека вызовов;
nullесли имя загрузчика классов не задано. - С тех пор:
- 9
- См. также:
getClassName
public String getClassName()
- Возвращает:
- полное имя
Class, содержащего точку выполнения, представленную этим элементом стека вызовов.
getMethodName
public String getMethodName()
<init> или <clinit>, в соответствии с разделом 3.9 Спецификации виртуальной машины Java.- Возвращает:
- имя метода, содержащего точку выполнения, представленную этим элементом стека вызовов.
isNativeMethod
public boolean isNativeMethod()
- Возвращает:
-
trueесли метод, содержащий точку выполнения, представленную этим элементом стека вызовов, является нативным методом.
toString
public String toString()
- Переопределяет:
-
toStringв классеObject - Примечание API:
- Формат этой строки зависит от реализации, но следующие примеры могут считаться типичными:
- "
com.foo.loader/foo@9.0/com.foo.Main.run(Main.java:101)" - См. описание ниже. - "
com.foo.loader/foo@9.0/com.foo.Main.run(Main.java)" - Номер строки недоступен. - "
com.foo.loader/foo@9.0/com.foo.Main.run(Unknown Source)" - Не доступно ни имя файла, ни номер строки. - "
com.foo.loader/foo@9.0/com.foo.Main.run(Native Method)" - Метод, содержащий точку выполнения, является нативным методом. - "
com.foo.loader//com.foo.bar.App.run(App.java:12)" - Класс точки выполнения определен в безымянном модуле загрузчика классов по имениcom.foo.loader. - "
acme@2.1/org.acme.Lib.test(Lib.java:80)" - Класс точки выполнения определен в модулеacmeзагруженном встроенным загрузчиком классов, таким как загрузчик классов приложения. - "
MyClass.mash(MyClass.java:9)" - КлассMyClassнаходится в пути поиска классов приложения.
Первый пример показывает элемент стека вызовов, состоящий из трех элементов, каждый из которых разделен
"/", за которым следуют имя файла исходного кода и номер строки исходного кода, содержащей точку выполнения. Первый элемент "com.foo.loader" - имя загрузчика классов. Второй элемент "foo@9.0" - имя и версия модуля. Третий элемент - метод, содержащий точку выполнения; "com.foo.Main"" - полное имя класса, а "run" - имя метода. "Main.java" - имя файла исходного кода, а "101" - номер строки.Если класс определен в безымянном модуле, то второй элемент опускается, как показано в "
com.foo.loader//com.foo.bar.App.run(App.java:12)".Если загрузчик классов является встроенным загрузчиком классов или не имеет имени, то первый элемент и его последующие
"/"опускаются, как показано в "acme@2.1/org.acme.Lib.test(Lib.java:80)". Если первый элемент опущен, а модуль является безымянным модулем, то второй элемент и его последующие"/"также опускаются, как показано в "MyClass.mash(MyClass.java:9)".Метод
toStringможет возвращать два разных значения для двухStackTraceElementэкземпляров, которые равны, например, одного созданного с помощью конструктора, и одного полученного изThrowableилиStackWalker.StackFrame, где реализация может выбрать пропустить некоторые элементы в возвращаемой строке. - "
- Возвращает:
- строковое представление объекта.
- См. также:
equals
public boolean equals(Object obj)
StackTraceElement, представляющим ту же точку выполнения, что и этот экземпляр. Два элемента стека вызовов a и b равны тогда и только тогда, когда:
equals(a.getClassLoaderName(), b.getClassLoaderName()) &&
equals(a.getModuleName(), b.getModuleName()) &&
equals(a.getModuleVersion(), b.getModuleVersion()) &&
equals(a.getClassName(), b.getClassName()) &&
equals(a.getMethodName(), b.getMethodName())
equals(a.getFileName(), b.getFileName()) &&
a.getLineNumber() == b.getLineNumber()
где equals имеет семантику Objects.equals.- Overrides:
-
equalsв классеObject - Parameters:
-
obj- объект для сравнения с этим элементом стека вызовов. - Returns:
- true, если указанный объект является другим экземпляром
StackTraceElement, представляющим ту же точку выполнения, что и этот экземпляр. - See Also:
hashCode
public int hashCode()
- Overrides:
-
hashCodeв классеObject - Returns:
- значение хэш-кода для этого объекта.
- See Also:
© 1993, 2021, 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/17/docs/api/java.base/java/lang/StackTraceElement.html