2016-05-18 1 views
0

は、私がPrintWriterPrinter(内部android.util)つまずい: https://developer.android.com/reference/android/util/PrintWriterPrinter.htmlAndroidでPrintWriterPrinterを使用するにはどうすればよいですか? Androidの開発者データベース内の研究中に

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を使用する理由私は手動でPrintWriterPrinterを作成するのではなく、私のPrintWriterオブジェクトにのprintlnを呼び出してから、その上のprintln を(当時のPrintWriterにのprintlnを呼び出す)を呼び出すことができれば?

+0

印刷中の文字列/ – Amy

+0

@Amyも実際には、PrintWriterに文字列を印刷します – Aenadon

答えて

1

キーはimplements Printerです。

Javaプログラミングを学んだら、Java interfacesについて学びました。クラスは、implementsキーワードを使用してインターフェイスを実装することを宣言します。 PrintWriterPrinter implements Printerは、PrintWriterPrinterPrinterインターフェイスを実装していることを示します。

JavaDocsのPrinterインターフェイスを見ると、その唯一のprintln()メソッドが定義されていることがわかります。しかし、慎重に見れば、JavaDocsにはそのインタフェースの実装が4つあります:LogPrinterPrintStreamPrinterPrintWriterPrinter、およびStringBuilderPrinterです。 polymorphismと呼ばれるものを介し

、他のコードは、そのオブジェクトの背後にあるこれら四つの実装のどの知らまたは気にすることなく、そのオブジェクト—にprintln()を呼び出すPrinterインタフェース—を実装することが知られているオブジェクトと連携することができます。他の開発者は、Printerインターフェース(例えば、最後の50行をArrayListに格納する)の他の実装を作成することができ、Printerを必要とする残りのフレームワークは問題なしでそのカスタム実装を使用することができます。

+0

これは、次回は私が行ったより多くの研究をする必要があることを意味すると思います...ありがとうございます! :) – Aenadon

0

PrintWriterのいくつかのメソッドを目的の用途(たとえば、flush/closeメソッド)で非表示にする可能性がありますか?

+0

これは意味をなさないでしょう...私はPWPの内容を出力することができないので、そのPWを参照する必要があります – Aenadon

+0

意味があるかどうかにかかわらず、私はPrinterインターフェイスが意味を成すかどうかにかかっています。これは、プリンタを実装しているオブジェクトの他のメソッドを隠したり、カプセル化したり保護したりしながら、何かを渡すことを可能にします。たとえば、PrintWriterは、おそらくPrintWriterPrinterの作成者が意図する前に、Printerインターフェイスで閉じることはできません。 – nsandersen

関連する問題