我正在编写一个 java 反编译器。为了给输出一个很好的缩进,我决定编写一个类TabbedPrintWriter
来自动适当地标记输出。这是代码:
import java.io.OutputStream;
import java.io.PrintWriter;
public class TabbedPrintWriter extends PrintWriter {
private static int indentAmount = 4;
private int indent = 0;
public TabbedPrintWriter(OutputStream out) {
super(out);
}
public TabbedPrintWriter(OutputStream out, boolean autoFlush) {
super(out, autoFlush);
}
@Override
public void println() {
super.println();
for (int i = 0; i <= indentAmount * indent; i++) {
super.write(' ');
}
}
public void indent() {
indent++;
}
public void unindent() {
indent--;
}
}
我还写了一个测试类来测试这个:
public class TabbedPrintWriterTest {
public static void main(String[] args) {
TabbedPrintWriter writer = new TabbedPrintWriter(System.out, true);
writer.println("Hello");
writer.indent();
writer.println("Goodbye");
}
}
如果你看代码,每个缩进级别应该是四个空格。但是,如果我运行它,我会得到以下输出:
Hello
Goodbye
是的,这是正确的。只有一个空间。
为什么是这样?