为什么 Throwable 类中的public void printStackTrace(PrintStream s)
采用PrintWriter而不是Writer?
我认为Writer应该是标准(接口的代码,而不是特定的实现),但它可能是我缺少的东西,因此这个问题。
答案 0 :(得分:1)
可能有几个原因
他们可以做的是接受一个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));
答案 1 :(得分:1)
Writer
是PrintWriter
扩展的抽象类。 Throwable.printStackTrace
需要PrintWriter
,因为它会在println
类上调用Writer
方法。println
类中没有这个方法。{{1}}被调用,因为它需要打印堆栈跟踪,每行一个堆栈帧。