2
public class A {
public interface I<T> {
public Integer toInt(T x);
}
public static int t(String s, I<String> i) {
// System.out.println(i instanceof I<Integer>);
return i.toInt(s);
}
public static <S> int g(S s, I<T> i){
return i.toInt(s);
}
public static void main (String[] args) {
System.out.println(t("dcba", s->(int)(s.charAt(0)+'a')));
}
}
爲什麼方法g
無法通過編譯?爲什麼方法t
中的行System.out.println(i instanceof I<Integer>)
無法通過編譯?編譯錯誤instanceof和泛型
「g不能在其簽名中使用泛型類型參數T」,所以它可以是參數「K」嗎?你爲什麼選擇「s」? – shosh
@shosh你選擇了'S'。你爲靜態方法'g'聲明瞭一個泛型類型參數'
',因爲你將's'傳遞給''''參數和'i'參數似乎對's'參數和' i.toInt()'。 – Eran另一種選擇:'公共靜態
int g(S s,I i)'。未經測試,可能不適用於您的消息正文。 –