ThrowableクラスでWriterではなくPrintWriterを使用するのはpublic void printStackTrace(PrintStream s)
なぜですか?
Writerは標準(特定の実装ではなく、インターフェイスへのコード)である必要があると思いますが、それは私が見逃しているものである可能性があるため、この質問です。
ThrowableクラスでWriterではなくPrintWriterを使用するのはpublic void printStackTrace(PrintStream s)
なぜですか?
Writerは標準(特定の実装ではなく、インターフェイスへのコード)である必要があると思いますが、それは私が見逃しているものである可能性があるため、この質問です。
いくつかの理由が考えられます
彼らができたのは、このようにWriterの親であるAppendableを受け入れることです。
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
を取ります。1行に1スタックフレームのスタックトレースを出力する必要があるため、が呼び出されます。PrintWriter
println
Writer
println