java-支持它的CharSequence实现上的indexOf

在我的程序中,我使用了很多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);
}

在对类型进行硬编码方面,这非常丑陋,但是可以工作.

上一篇:17.方法重写


下一篇:php-用户级别和OOP架构