簡體   English   中英

Android中PrintWriterPrinter的用途是什么?

[英]What is the use of PrintWriterPrinter in Android?

在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。 我的問題:為什么我會用這個沒用PrintWriterPrinter如果我可以手動調用的println我PrintWriter對象上,而不是建立PrintWriterPrinter,並調用的println上(然后調用的println上一個PrintWriter)?

關鍵是implements Printer

學習Java編程時,您了解了Java接口 一個類聲明它通過implements關鍵字實現了一個接口。 PrintWriterPrinter implements Printer表示PrintWriterPrinter實現Printer接口。

如果您查看JavaDocs中的Printer接口,您將看到它定義了唯一的println()方法。 但是,如果仔細看,您會發現JavaDocs列出了該接口的四個實現: LogPrinterPrintStreamPrinterPrintWriterPrinterStringBuilderPrinter

通過所謂的多態性 ,其他代碼可以與已知實現Printer接口的對象一起工作—在該對象上調用println() ,而無需知道或關心這四個實現中的哪個位於該對象后面。 其他開發人員可以創建Printer接口的其他實現(例如,將最后50行存儲在ArrayList ),其余需要Printer的框架可以使用該自定義實現而不會出現問題。

是否可以在PrintWriter上隱藏某些特定用途的方法,例如沖洗/關閉方法?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM