2012-04-01 11 views
0

ReadTillというメソッドがありますが、コードは同じですがパラメータのタイプは異なります。誰かが私にそれらを組み合わせる戦略/コードを示すことができますか?私はInputStreamBufferedReaderがインタフェースを共有しているとは思っていません。もしそうであれば、それは何ですか?Javaの重複したメソッドを組み合わせる

私はジェネリックスでこれをどうすればいいのですか?

ありがとうございます。

ちょうど私の頭の上から
public static void ReadTill(InputStream in, OutputStream out, String end) throws IOException { 
    int c, pos = 0; 
    StringBuffer temp = new StringBuffer(); 
    while ((c = in.read()) != -1) { 
     char cc = (char) c; 
     if (end.charAt(pos++) == cc) { 
      if (pos >= end.length()) { 
       break; 
      } 
      temp.append(cc); 
     } else { 
      pos = 0; 
      if (temp.length() > 0) { 
       out.write(temp.toString().getBytes()); 
       temp.setLength(0); 
      } 
      out.write(cc); 
     } 
    } 
} 

public static void ReadTill(BufferedReader in, OutputStream out, String end) throws IOException { 
    int c, pos = 0; 
    StringBuffer temp = new StringBuffer(); 
    while ((c = in.read()) != -1) { 
     char cc = (char) c; 
     if (end.charAt(pos++) == cc) { 
      if (pos >= end.length()) { 
       break; 
      } 
      temp.append(cc); 
     } else { 
      pos = 0; 
      if (temp.length() > 0) { 
       out.write(temp.toString().getBytes()); 
       temp.setLength(0); 
      } 
      out.write(cc); 
     } 
    } 
} 
+0

ここでジェネリックを使用したいのはなぜですか?ジェネリックスは、メソッドの引数や変数が実際にObjectを受け取り、特定のクラスで型付けされているかのようにアクセスされる場合に使用されます。あなたの場合、そのような変数はありません。 –

+0

@AlexeiKaigorodov理由: A)コードをクリーンアップしたいと思っていましたが、彼らは教育目的でどのように使用されるのかを見てください。 –

答えて

2

これらのクラス(InputStreamBufferedReader)が同じインターフェイスを実装も同じクラスを拡張していますが、から1レコード生成することができていませんその他:

public static void readTill(InputStream in, OutputStream out, String end) throws IOException { 
    readTill(new BufferedReader(new InputStreamReader(in)), out, end); 
} 

public static void readTill(BufferedReader in, OutputStream out, String end) throws IOException { 
    // as before 
} 

通常、Javaメソッド名はcamelCaseなので、例で変更しました。

+0

ジェネリック医薬品でどのように治療できるかご存知ですか? –

+1

私は答えの先頭に書いた理由のため、私はそれが可能であるかどうかはわかりません。 – MByD

1

、テストされていない:

public static void ReadTill(InputStream in, OutputStream out, String end) throws IOException { 
ReadTill(new BufferedReader(new InputStreamReader(in)), out, end); 
} 
関連する問題