在我的程序中,我使用了很多Strings和StringBuilders.我想摆脱StringBuilder toString()方法并在整个过程中使用CharSequences.但是,我需要访问indexOf方法(在StringBuilder和String中都可用,但在其他实现中不可用).我如何实现使该功能可见的接口?
解决方法:
好吧,您可以通过对已知类型的测试进行硬编码,然后以“手动”方式进行编码,从而相当容易地做到这一点:
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);
}
在对类型进行硬编码方面,这非常丑陋,但是可以工作.