为什么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被调用是因为它需要打印堆栈跟踪,每行一个堆栈帧。