[英]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列出了該接口的四個實現: LogPrinter
, PrintStreamPrinter
, PrintWriterPrinter
和StringBuilderPrinter
。
通過所謂的多態性 ,其他代碼可以與已知實現Printer
接口的對象一起工作—在該對象上調用println()
,而無需知道或關心這四個實現中的哪個位於該對象后面。 其他開發人員可以創建Printer
接口的其他實現(例如,將最后50行存儲在ArrayList
),其余需要Printer
的框架可以使用該自定義實現而不會出現問題。
是否可以在PrintWriter上隱藏某些特定用途的方法,例如沖洗/關閉方法?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.