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)'。未经测试,可能不适用于您的消息正文。 –