将Generic Type传递给indexOf方法JAVA

时间:2013-02-18 18:14:10

标签: java generics indexof

我想使用indexOf方法查找字符串中的单词数和字母数。

indexOf方法可以接受:

indexOf(String s)
indexOf(Char c)
indexOf(String s, index start) 

因此,该方法可以接受字符串字符,也可以接受起点

我希望能够将String或Character传递给此方法,因此我尝试使用泛型。下面的代码是main和2个函数。正如您所看到的,我希望能够让indexOf使用我传入的String或Character。如果我将indexOf中的's'转换为String,它可以工作,但是当它尝试以Char运行时会崩溃。非常感谢提前!

public static void main(String[] args) {
    MyStringMethods2 msm = new MyStringMethods2();
    msm.readString();
    msm.printCounts("big", 'a');
}

public <T> void printCounts(T s, T c) {
    System.out.println("***************************************");
    System.out.println("Analyzing sentence = " + myStr);
    System.out.println("Number of '" + s + "' is " + countOccurrences(s));

    System.out.println("Number of '" + c + "' is " + countOccurrences(c));
}

public <T> int countOccurrences(T s) {
    // use indexOf and return the number of occurrences of the string or
    // char "s"
    int index = 0;
    int count = 0;
    do {
        index = myStr.indexOf(s, index); //FAILS Here
        if (index != -1) {
            index++;
            count++;
        }
    } while (index != -1);
    return count;
}

1 个答案:

答案 0 :(得分:2)

String.indexOf不使用泛型。它需要特定类型的参数。您应该使用重载方法。因此:

public int countOccurrences(String s) {
    ...
}

public int countOccurrences(char c) {
    return countOccurrences(String.valueOf(c));
}