}, as per Section 3.9 of The Java Virtual
- * Machine Specification.
- *
- * @return the name of the method containing the execution point
- * represented by this stack trace element.
- */
- public String getMethodName() {
- return methodName;
- }
-
- /**
- * Returns true if the method containing the execution point
- * represented by this stack trace element is a native method.
- *
- * @return {@code true} if the method containing the execution point
- * represented by this stack trace element is a native method.
- */
- public boolean isNativeMethod() {
- return lineNumber == -2;
- }
-
- /**
- * Returns a string representation of this stack trace element. The
- * format of this string depends on the implementation, but the following
- * examples may be regarded as typical:
- *
- * -
- * {@code "MyClass.mash(MyClass.java:9)"} - Here, {@code "MyClass"}
- * is the fully-qualified name of the class containing the
- * execution point represented by this stack trace element,
- * {@code "mash"} is the name of the method containing the execution
- * point, {@code "MyClass.java"} is the source file containing the
- * execution point, and {@code "9"} is the line number of the source
- * line containing the execution point.
- *
-
- * {@code "MyClass.mash(MyClass.java)"} - As above, but the line
- * number is unavailable.
- *
-
- * {@code "MyClass.mash(Unknown Source)"} - As above, but neither
- * the file name nor the line number are available.
- *
-
- * {@code "MyClass.mash(Native Method)"} - As above, but neither
- * the file name nor the line number are available, and the method
- * containing the execution point is known to be a native method.
- *
- * @see Throwable#printStackTrace()
- */
- public String toString() {
- return getClassName() + "." + methodName +
- (isNativeMethod() ? "(Native Method)" :
- (fileName != null && lineNumber >= 0 ?
- "(" + fileName + ":" + lineNumber + ")" :
- (fileName != null ? "("+fileName+")" : "(Unknown Source)")));
- }
-
- /**
- * Returns true if the specified object is another
- * {@code StackTraceElement} instance representing the same execution
- * point as this instance. Two stack trace elements {@code a} and
- * {@code b} are equal if and only if:
- *
- * equals(a.getFileName(), b.getFileName()) &&
- * a.getLineNumber() == b.getLineNumber()) &&
- * equals(a.getClassName(), b.getClassName()) &&
- * equals(a.getMethodName(), b.getMethodName())
- *
- * where {@code equals} has the semantics of {@link
- * java.util.Objects#equals(Object, Object) Objects.equals}.
- *
- * @param obj the object to be compared with this stack trace element.
- * @return true if the specified object is another
- * {@code StackTraceElement} instance representing the same
- * execution point as this instance.
- */
- public boolean equals(Object obj) {
- if (obj==this)
- return true;
- if (!(obj instanceof StackTraceElement))
- return false;
- StackTraceElement e = (StackTraceElement)obj;
- return e.declaringClass.equals(declaringClass) &&
- e.lineNumber == lineNumber &&
- equals(methodName, e.methodName) &&
- equals(fileName, e.fileName);
- }
-
- /**
- * Returns a hash code value for this stack trace element.
- */
- public int hashCode() {
- int result = 31*declaringClass.hashCode() + methodName.hashCode();
- result = 31*result + (fileName == null ? 0 : fileName.hashCode());
- result = 31*result + lineNumber;
- return result;
- }
-
- private static boolean equals(Object a, Object b) {
- return (a == b) || (a != null && a.equals(b));
- }
-
- private static final long serialVersionUID = 6992337162326171013L;
-}