为什么public void printStackTrace(PrintStream s)
在Throwable类中采用 PrintWriter 而不是 Writer?
我认为 Writer 应该是规范(接口的代码,而不是特定的实现),但它可能是我缺少的东西,因此这个问题。
为什么public void printStackTrace(PrintStream s)
在Throwable类中采用 PrintWriter 而不是 Writer?
我认为 Writer 应该是规范(接口的代码,而不是特定的实现),但它可能是我缺少的东西,因此这个问题。
可能有几个原因
他们本可以做的是接受一个 Appendable,它是 Writer 的父级。
public void printStackTrace(Appendable appendable) {
PrintWriter pw = (appendable instanceof PrintWriter) ? (PrintWriter) appendable :
(appendable instanceof Writer) ? new PrintWriter((Writer) appendable) :
new printWriter(new AppendableWriter(appendable));
Writer
是一个PrintWriter
扩展的抽象类。Throwable.printStackTrace
需要 aPrintWriter
因为它调用了类println
中不可用的方法Writer
。println
被调用是因为它需要打印堆栈跟踪,每行一个堆栈帧。