我想自定义 StackTraceElement
class的哈希码。我的问题是如何使用这个新的自定义类而不是 JVM 的默认 StackTraceElement 类。
最佳答案
I want to customize the StackTraceElement class by extending it
StackTraceElement是最终
,因此无法扩展。
如果您(无论出于何种原因)想要自定义堆栈跟踪的打印方式,您可以实现一个实用程序方法,该方法采用 Throwable
,然后使用 StackTraceElement< 中的各种方法。/code> 创建您自己的布局,例如
public static void printCustomizedTrace(Throwable t) {
for(StackTraceElement e : t.getStackTrace()) {
System.err.println(" => " + e.getFileName() + ":" + e.getLineNumber());
}
}
您还可以使用委托(delegate)并创建CustomStackTraceElements
列表,并在中实现其他逻辑(例如不同的
CustomStackTraceElement类:hashmap()
)
public static List<CustomStackTraceElement> getCustomizedStackTrace(Throwable t) {
List<CustomStackTraceElement> result = new ArrayList<>();
for(StackTraceElement e : t.getStackTrace()) {
result.add(new CustomStackTraceElement(e));
}
return result;
}
关于java - 堆栈跟踪 : StackTraceElement Customization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14438465/