📜  Java Java类

📅  最后修改于: 2022-05-13 01:54:44.285000             🧑  作者: Mango

Java Java类

堆栈跟踪中的一个元素,由 Throwable.getStackTrace() 返回。每个元素代表一个堆栈帧。除了栈顶的栈帧外,所有栈帧都代表一个方法调用。堆栈顶部的帧表示生成堆栈跟踪的执行点。

此类描述单个堆栈帧,它是发生异常时堆栈跟踪的单个元素。

  • 除了栈顶的栈帧外,所有栈帧都代表一个方法调用。
  • 堆栈顶部的帧表示生成堆栈跟踪的执行点。
  • 每个堆栈帧代表一个执行点,其中包括方法名、文件名和源代码行号等内容。
  • getStackTrace()返回一个StackTraceElement数组
    Throwable类的方法。

构造函数:创建表示指定执行点的堆栈跟踪元素。

StackTraceElement(String declaringClass, 
String methodName, String fileName, int lineNumber)

参数:

  • declaringClass – 包含堆栈跟踪元素表示的执行点的类的完全限定名称。
  • methodName – 包含堆栈跟踪元素表示的执行点的方法的名称。
  • fileName – 包含堆栈跟踪元素表示的执行点的文件的名称,如果此信息不可用,则为 null
  • lineNumber – 包含此堆栈跟踪元素表示的执行点的源行的行号,如果此信息不可用,则为负数。值 -2 表示包含执行点的方法是本机方法。

抛出: NullPointerException – 如果 declaringClass 或 methodName 为 null。

方法:

1. boolean equals(ob):如果调用StackTraceElementob传入的一样,则返回 try。否则返回false。

Syntax: public boolean equals(ob)
Returns: true if the specified object is 
another StackTraceElement instance representing the same execution 
point as this instance.
Exception: NA
Java
// Java code illustrating equals() method
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{ 
    public static void main(String[] arg)
    {
        StackTraceElement st1 = new StackTraceElement("foo", "fuction1",
                                                   "StackTrace.java", 1);
        StackTraceElement st2 = new StackTraceElement("bar", "function2",
                                                   "StackTrace.java", 1);
         
        Object ob = st1.getFileName();
 
        // checking whether file names are same or not
        System.out.println(st2.getFileName().equals(ob));
    }
}


Java
// Java code illustrating getClassName() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{ 
    public static void main(String[] arg)
    {  
        System.out.println("Class name of each thread involved:");
        for(int i = 0; i<2; i++)
        {  
            System.out.println(Thread.currentThread().getStackTrace()[I].
            getClassName());
        }
    }
}


Java
// Java code illustrating getFileName() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{ 
   public static void main(String[] arg)
   {
       System.out.println("file name: ");
       for(int i = 0; i<2; i++)
       System.out.println(Thread.currentThread().getStackTrace()[i].
        getFileName());
   }
}


Java
// Java code illustrating getLineNumber() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{ 
   public static void main(String[] arg)
   {
       System.out.println("line number: ");
       for(int i = 0; i<2; i++)
       System.out.println(Thread.currentThread().getStackTrace()[i].
        getLineNumber());
   }
}


Java
// Java code illustrating getMethodName() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{ 
   public static void main(String[] arg)
   {
       System.out.println("method name: ");
       for(int i = 0; i<2; i++)
       System.out.println(Thread.currentThread().getStackTrace()[i].
        getMethodName());
   }
}


Java
// Java code illustrating hashCode() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{ 
   public static void main(String[] arg)
   {
       System.out.println("hash code: ");
       for(int i = 0; i<2; i++)
       System.out.println(Thread.currentThread().getStackTrace()[i].
        hashCode());
   }
}


Java
// Java code illustrating isNativeMethod() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{ 
   public static void main(String[] arg)
   {
      
       for(int i = 0; i<2; i++)
       System.out.println(Thread.currentThread().getStackTrace()[i].
        isNativeMethod());
   }
}


Java
// Java code illustrating toString() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{ 
   public static void main(String[] arg)
   {
       System.out.println("String equivalent: ");
       for(int i = 0; i<2; i++)
       System.out.println(Thread.currentThread().getStackTrace()[i].
        toString());
   }
}


输出:

true

2. String getClassName():返回调用StackTraceElement所描述的执行点的类名。

Syntax: public String getClassName().
Returns: the fully qualified name of the Class
containing the execution point represented by this stack trace element.
Exception: NA.

Java

// Java code illustrating getClassName() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{ 
    public static void main(String[] arg)
    {  
        System.out.println("Class name of each thread involved:");
        for(int i = 0; i<2; i++)
        {  
            System.out.println(Thread.currentThread().getStackTrace()[I].
            getClassName());
        }
    }
}

输出:

Class name of each thread involved:
java.lang.Thread
StackTraceElementDemo

3. String getFileName():返回调用StackTraceElement所描述的执行点的文件名。

Syntax: public String getFileName().
Returns: the name of the file containing 
the execution point represented by this stack trace element,
or null if this information is unavailable.
Exception: NA.

Java

// Java code illustrating getFileName() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{ 
   public static void main(String[] arg)
   {
       System.out.println("file name: ");
       for(int i = 0; i<2; i++)
       System.out.println(Thread.currentThread().getStackTrace()[i].
        getFileName());
   }
}

输出:

file name: 
Thread.java
StackTraceElementDemo.java

4. int getLineNumber():返回调用StackTraceElement所描述的执行点的源代码行号。在某些情况下,行号将不可用,在这种情况下会返回负值。

Syntax: public int getLineNumber().
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.
Exception: NA.

Java

// Java code illustrating getLineNumber() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{ 
   public static void main(String[] arg)
   {
       System.out.println("line number: ");
       for(int i = 0; i<2; i++)
       System.out.println(Thread.currentThread().getStackTrace()[i].
        getLineNumber());
   }
}

输出:

line number: 
1556
10

5. String getMethodName():返回调用StackTraceElement所描述的执行点的方法名。

Syntax: public String getMethodName().
Returns: the name of the method containing the 
execution point represented by this stack trace element.
Exception: NA.

Java

// Java code illustrating getMethodName() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{ 
   public static void main(String[] arg)
   {
       System.out.println("method name: ");
       for(int i = 0; i<2; i++)
       System.out.println(Thread.currentThread().getStackTrace()[i].
        getMethodName());
   }
}

输出:

method name: 
getStackTrace
main

6. int hashCode():返回调用StackTraceElement的哈希码。

Syntax: public int hashCode().
Returns: a hash code value for this object.
Exception: NA.

Java

// Java code illustrating hashCode() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{ 
   public static void main(String[] arg)
   {
       System.out.println("hash code: ");
       for(int i = 0; i<2; i++)
       System.out.println(Thread.currentThread().getStackTrace()[i].
        hashCode());
   }
}

输出:

hash code: 
-1225537245
-1314176653

7. boolean isNativeMethod():如果调用StackTraceElement描述了本地方法,则返回 true。否则返回假。

Syntax: public boolean isNativeMethod().
Returns: true if the method containing the execution 
point represented by this stack trace element is a native method.
Exception: NA.

Java

// Java code illustrating isNativeMethod() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{ 
   public static void main(String[] arg)
   {
      
       for(int i = 0; i<2; i++)
       System.out.println(Thread.currentThread().getStackTrace()[i].
        isNativeMethod());
   }
}

输出:

false
false

8. String toString():返回调用序列的等效字符串。

Syntax: public String toString().
Returns: a string representation of the object.
Exception: NA.

Java

// Java code illustrating toString() method.
import java.lang.*;
import java.io.*;
import java.util.*;
public class StackTraceElementDemo
{ 
   public static void main(String[] arg)
   {
       System.out.println("String equivalent: ");
       for(int i = 0; i<2; i++)
       System.out.println(Thread.currentThread().getStackTrace()[i].
        toString());
   }
}

输出:

String equivalent: 
java.lang.Thread.getStackTrace
StackTraceElementDemo.main