我想自定义类的哈希码。我的问题是如何使用这个新的自定义类而不是 JVM 的默认 StackTraceElement 类。 StackTraceElement
问问题
1067 次
2 回答
2
我想通过扩展自定义 StackTraceElement 类
StackTraceElement是final
并且因此不能被扩展。
如果您(无论出于何种原因)想要自定义堆栈跟踪的打印方式,您可以实现一个实用程序方法,该方法采用Throwable
然后使用各种方法StackTraceElement
来创建您自己的布局,例如
public static void printCustomizedTrace(Throwable t) {
for(StackTraceElement e : t.getStackTrace()) {
System.err.println(" => " + e.getFileName() + ":" + e.getLineNumber());
}
}
您还可以使用委托并创建一个列表CustomStackTraceElements
,并在类中实现其他逻辑(如 different hashmap()
)CustomStackTraceElement
:
public static List<CustomStackTraceElement> getCustomizedStackTrace(Throwable t) {
List<CustomStackTraceElement> result = new ArrayList<>();
for(StackTraceElement e : t.getStackTrace()) {
result.add(new CustomStackTraceElement(e));
}
return result;
}
于 2013-01-21T12:27:44.997 回答