Android中的PrintWriterPrinter有什么用?

时间:2016-05-18 11:29:17

标签: java android printwriter println

在Android的开发人员数据库中进行研究时,我偶然发现了PrintWriterPrinter(在android.util中): https://developer.android.com/reference/android/util/PrintWriterPrinter.html

PrintWriterPrinter类的源代码如下所示:

package android.util;

import java.io.PrintWriter;

/**
 * Implementation of a {@link android.util.Printer} that sends its output
 * to a {@link java.io.PrintWriter}.
 */
public class PrintWriterPrinter implements Printer {
    private final PrintWriter mPW;

    /**
     * Create a new Printer that sends to a PrintWriter object.
     * 
     * @param pw The PrintWriter where you would like output to go.
     */
    public PrintWriterPrinter(PrintWriter pw) {
        mPW = pw;
    }

    public void println(String x) {
        mPW.println(x);
    }
}

如您所见,它只有一个方法:println(String x),它基本上将println应用于传递的PrintWriter。 我的问题:如果我可以在我的PrintWriter对象上手动调用 println 而不是创建PrintWriterPrinter然后在其上调用 println (然后调用它),为什么我会使用这个无用的PrintWriterPrinter? PrintWriter上的 println )?

2 个答案:

答案 0 :(得分:1)

关键是implements Printer

学习Java编程后,您了解了Java interfaces。一个类声明它通过implements关键字实现了一个接口; PrintWriterPrinter implements Printer表示PrintWriterPrinter实现了Printer接口。

如果查看JavaDocs中的Printer接口,您将看到它定义了唯一的println()方法。但是,如果仔细观察,您会看到JavaDocs列出了该接口的四种实现:LogPrinterPrintStreamPrinterPrintWriterPrinterStringBuilderPrinter

通过所谓的polymorphism,其他代码可以使用已知实现Printer接口的对象 - 在该对象上调用println() - 不知道或关心这四个中的哪一个实现在于该对象。其他开发人员可以创建Printer接口的其他实现(例如,在ArrayList中存储最后50行的那个),并且需要Printer的框架的其余部分可以使用自定义实现没有问题。

答案 1 :(得分:0)

可能会在PrintWriter上隐藏一些用于预期用途的方法,例如刷新/关闭方法?

相关问题