StackTraceElement (Java SE 9 & JDK 9 ) (original) (raw)
Constructor Detail
* #### StackTraceElement
public StackTraceElement([String](../../java/lang/String.html "class in java.lang") declaringClass,
[String](../../java/lang/String.html "class in java.lang") methodName,
[String](../../java/lang/String.html "class in java.lang") fileName,
int lineNumber)
Creates a stack trace element representing the specified execution point. The [module name](../../java/lang/StackTraceElement.html#getModuleName--) and [module version](../../java/lang/StackTraceElement.html#getModuleVersion--) of the stack trace element will be `null`.
Parameters:
`declaringClass` \- the fully qualified name of the class containing the execution point represented by the stack trace element
`methodName` \- the name of the method containing the execution point represented by the stack trace element
`fileName` \- the name of the file containing the execution point represented by the stack trace element, or `null` if this information is unavailable
`lineNumber` \- the line number of the source line containing the execution point represented by this stack trace element, or a negative number if this information is unavailable. A value of -2 indicates that the method containing the execution point is a native method
Throws:
`[NullPointerException](../../java/lang/NullPointerException.html "class in java.lang")` \- if `declaringClass` or`methodName` is null
Since:
1.5
* #### StackTraceElement
public StackTraceElement([String](../../java/lang/String.html "class in java.lang") classLoaderName,
[String](../../java/lang/String.html "class in java.lang") moduleName,
[String](../../java/lang/String.html "class in java.lang") moduleVersion,
[String](../../java/lang/String.html "class in java.lang") declaringClass,
[String](../../java/lang/String.html "class in java.lang") methodName,
[String](../../java/lang/String.html "class in java.lang") fileName,
int lineNumber)
Creates a stack trace element representing the specified execution point.
Parameters:
`classLoaderName` \- the class loader name if the class loader of the class containing the execution point represented by the stack trace is named; otherwise `null`
`moduleName` \- the module name if the class containing the execution point represented by the stack trace is in a named module; otherwise `null`
`moduleVersion` \- the module version if the class containing the execution point represented by the stack trace is in a named module that has a version; otherwise `null`
`declaringClass` \- the fully qualified name of the class containing the execution point represented by the stack trace element
`methodName` \- the name of the method containing the execution point represented by the stack trace element
`fileName` \- the name of the file containing the execution point represented by the stack trace element, or `null` if this information is unavailable
`lineNumber` \- the line number of the source line containing the execution point represented by this stack trace element, or a negative number if this information is unavailable. A value of -2 indicates that the method containing the execution point is a native method
Throws:
`[NullPointerException](../../java/lang/NullPointerException.html "class in java.lang")` \- if `declaringClass` is `null` or `methodName` is `null`
Since:
9
Method Detail
* #### getFileName
public [String](../../java/lang/String.html "class in java.lang") getFileName()
Returns the name of the source file containing the execution point represented by this stack trace element. Generally, this corresponds to the `SourceFile` attribute of the relevant `class` file (as per _The Java Virtual Machine Specification_, Section 4.7.7). In some systems, the name may refer to some source code unit other than a file, such as an entry in source repository.
Returns:
the name of the file containing the execution point represented by this stack trace element, or `null` if this information is unavailable.
* #### getLineNumber
public int getLineNumber()
Returns the line number of the source line containing the execution point represented by this stack trace element. Generally, this is derived from the `LineNumberTable` attribute of the relevant`class` file (as per _The Java Virtual Machine Specification_, Section 4.7.8).
Returns:
the line number of the source line containing the execution point represented by this stack trace element, or a negative number if this information is unavailable.
* #### getModuleName
public [String](../../java/lang/String.html "class in java.lang") getModuleName()
Returns the module name of the module containing the execution point represented by this stack trace element.
Returns:
the module name of the `Module` containing the execution point represented by this stack trace element; `null` if the module name is not available.
Since:
9
See Also:
[Module.getName()](../../java/lang/Module.html#getName--)
* #### getModuleVersion
public [String](../../java/lang/String.html "class in java.lang") getModuleVersion()
Returns the module version of the module containing the execution point represented by this stack trace element.
Returns:
the module version of the `Module` containing the execution point represented by this stack trace element; `null` if the module version is not available.
Since:
9
See Also:
[ModuleDescriptor.Version](../../java/lang/module/ModuleDescriptor.Version.html "class in java.lang.module")
* #### getClassLoaderName
public [String](../../java/lang/String.html "class in java.lang") getClassLoaderName()
Returns the name of the class loader of the class containing the execution point represented by this stack trace element.
Returns:
the name of the class loader of the class containing the execution point represented by this stack trace element; `null` if the class loader is not named.
Since:
9
See Also:
[ClassLoader.getName()](../../java/lang/ClassLoader.html#getName--)
* #### getClassName
public [String](../../java/lang/String.html "class in java.lang") getClassName()
Returns the fully qualified name of the class containing the execution point represented by this stack trace element.
Returns:
the fully qualified name of the `Class` containing the execution point represented by this stack trace element.
* #### getMethodName
public [String](../../java/lang/String.html "class in java.lang") getMethodName()
Returns the name of the method containing the execution point represented by this stack trace element. If the execution point is contained in an instance or class initializer, this method will return the appropriate _special method name_, `<init>` or`<clinit>`, as per Section 3.9 of _The Java Virtual Machine Specification_.
Returns:
the name of the method containing the execution point represented by this stack trace element.
* #### isNativeMethod
public boolean isNativeMethod()
Returns true if the method containing the execution point represented by this stack trace element is a native method.
Returns:
`true` if the method containing the execution point represented by this stack trace element is a native method.
* #### toString
public [String](../../java/lang/String.html "class in java.lang") toString()
Returns a string representation of this stack trace element.
Overrides:
`[toString](../../java/lang/Object.html#toString--)` in class `[Object](../../java/lang/Object.html "class in java.lang")`
API Note:
The format of this string depends on the implementation, but the following examples may be regarded as typical:
* "`com.foo.loader/foo@9.0/com.foo.Main.run(Main.java:101)`" - See the description below.
* "`com.foo.loader/foo@9.0/com.foo.Main.run(Main.java)`" - The line number is unavailable.
* "`com.foo.loader/foo@9.0/com.foo.Main.run(Unknown Source)`" - Neither the file name nor the line number is available.
* "`com.foo.loader/foo@9.0/com.foo.Main.run(Native Method)`" - The method containing the execution point is a native method.
* "`com.foo.loader//com.foo.bar.App.run(App.java:12)`" - The class of the execution point is defined in the unnamed module of the class loader named `com.foo.loader`.
* "`acme@2.1/org.acme.Lib.test(Lib.java:80)`" - The class of the execution point is defined in `acme` module loaded by by a built-in class loader such as the application class loader.
* "`MyClass.mash(MyClass.java:9)`" - `MyClass` class is on the application class path.
The first example shows a stack trace element consisting of three elements, each separated by `"/"` followed with the source file name and the line number of the source line containing the execution point. The first element "`com.foo.loader`" is the name of the class loader. The second element "`foo@9.0`" is the module name and version. The third element is the method containing the execution point; "`com.foo.Main"`" is the fully-qualified class name and "`run`" is the name of the method. "`Main.java`" is the source file name and "`101`" is the line number.
If a class is defined in an _unnamed module_ then the second element is omitted as shown in "`com.foo.loader//com.foo.bar.App.run(App.java:12)`".
If the class loader is a [ built-in class loader](ClassLoader.html#builtinLoaders) or is not named then the first element and its following `"/"` are omitted as shown in "`acme@2.1/org.acme.Lib.test(Lib.java:80)`". If the first element is omitted and the module is an unnamed module, the second element and its following `"/"` are also omitted as shown in "`MyClass.mash(MyClass.java:9)`".
The `toString` method may return two different values on two`StackTraceElement` instances that are[equal](../../java/lang/StackTraceElement.html#equals-java.lang.Object-), for example one created via the constructor, and one obtained from [Throwable](../../java/lang/Throwable.html "class in java.lang") or[StackWalker.StackFrame](../../java/lang/StackWalker.StackFrame.html "interface in java.lang"), where an implementation may choose to omit some element in the returned string.
Returns:
a string representation of the object.
See Also:
[Throwable.printStackTrace()](../../java/lang/Throwable.html#printStackTrace--)
* #### equals
public boolean equals([Object](../../java/lang/Object.html "class in java.lang") obj)
Returns true if the specified object is another`StackTraceElement` instance representing the same execution point as this instance. Two stack trace elements `a` and`b` are equal if and only if:
```
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()
```
where `equals` has the semantics of [Objects.equals](../../java/util/Objects.html#equals-java.lang.Object-java.lang.Object-).
Overrides:
`[equals](../../java/lang/Object.html#equals-java.lang.Object-)` in class `[Object](../../java/lang/Object.html "class in java.lang")`
Parameters:
`obj` \- the object to be compared with this stack trace element.
Returns:
true if the specified object is another`StackTraceElement` instance representing the same execution point as this instance.
See Also:
[Object.hashCode()](../../java/lang/Object.html#hashCode--), [HashMap](../../java/util/HashMap.html "class in java.util")
* #### hashCode
public int hashCode()
Returns a hash code value for this stack trace element.
Overrides:
`[hashCode](../../java/lang/Object.html#hashCode--)` in class `[Object](../../java/lang/Object.html "class in java.lang")`
Returns:
a hash code value for this object.
See Also:
[Object.equals(java.lang.Object)](../../java/lang/Object.html#equals-java.lang.Object-), [System.identityHashCode(java.lang.Object)](../../java/lang/System.html#identityHashCode-java.lang.Object-)