私のプログラムでは、多くの Strings と StringBuilders を使用しています。StringBuilder toString() メソッドを取り除き、全体で CharSequences を使用したいと思います。ただし、indexOf メソッド (StringBuilder と String の両方で使用できますが、他の実装では使用できません) にアクセスする必要があります。この関数を可視化するインターフェイスを実装するにはどうすればよいですか?
2183 次
3 に答える
3
まあ、既知の型のテストをハードコーディングし、それ以外の場合は「手動で」実行することで、かなり簡単に実行できます。
public static int indexOf(CharSequence input, String needle) {
if (input instanceof String) {
String text = (String) input;
return text.indexOf(needle);
}
if (input instanceof StringBuilder) {
StringBuilder text = (StringBuilder) input;
return text.indexOf(needle);
}
// TODO: Do this without calling toString() :)
return input.toString().indexOf(needle);
}
これは、型をハードコーディングするという点ではかなり醜いですが、うまくいきます。
于 2011-08-07T12:27:50.443 に答える
-1
1 つの考えは、型ごとに複数の静的実装を持つクラスを持つことです。
public class Strings{
public static int indexOf(String input, String c){
return input.indexOf(c);
}
public static int indexOf(StringBuilder input, String c){
return input.indexOf(c);
}
public static int indexOf(YourClass input, String c){
return input.indexOf(c);
}
}
Strings.indexOf(whatever)
このようにして、実装を持つ型ごとに呼び出すことができます。これにより、コンパイラ/jvm に使用するメソッドを選択させることで、コードをクリーンに保つことができます。
于 2011-08-07T12:59:46.690 に答える