Я хочу использовать метод indexOf
, чтобы найти количество слов и буквы в строке.Передача общего типа в метод indexOf JAVA
метод IndexOf может принять:
indexOf(String s)
indexOf(Char c)
indexOf(String s, index start)
Таким образом, метод может принимать Струны или символы и могут также принимать отправной точкой
Я хочу, чтобы иметь возможность передавать или строку или Символ в этот метод, поэтому я попытался использовать дженерики. Ниже приведен код и основные функции. Как вы можете видеть, я хочу иметь возможность работать с indexOf со строкой или символом, который я передаю. Если я передаю 's' в indexOf в 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;
}
Метод перегрузки просто не работает таким образом. Три отдельных метода indexOf существенно не связаны друг с другом, поэтому вы не можете использовать generics для интеллектуального вызова того или другого. – ruakh
Ах, черт возьми, так не получается, в принципе, да? Если бы не было возможности проверить, какой тип класса является его общим объектом, а затем сделать (String), то indexOf ((String) s, index) & if (Char), то indexOf ((Char) s, index) – nearpoint