java "Object" class 的通用函数参数类型不匹配
java generic function parameter type mismatch for "Object" class
我有以下代码片段:
class pp<K, V> {
public pp(K k, V v) {
this.k = k;
this.v = v;
}
private K k;
private V v;
}
class my{
public static void f(pp<? extends Object, ? extends Object> p){
System.out.println(p);
}
}
public class genericFunction {
public static void main(String[] args) {
my.f("abc", new Integer(2));//compilation failure
}
}
主程序内部编译失败。说找
pp<? extends java.lang.Object,? extends java.lang.Object>
但找到了
java.lang.String,java.lang.Integer
如何解决?
你没有pp
,你有两个参数。
将它们放入您的对象类型中:my.f(new pp<>("abc", new Integer(2)))
。
因为您传递的是文字参数(字符串和整数)而不是传递 pp
的对象。
尝试my.f(new pp<>("abc", new Integer(2)))
旁注:使用 作为类型名称
我有以下代码片段:
class pp<K, V> {
public pp(K k, V v) {
this.k = k;
this.v = v;
}
private K k;
private V v;
}
class my{
public static void f(pp<? extends Object, ? extends Object> p){
System.out.println(p);
}
}
public class genericFunction {
public static void main(String[] args) {
my.f("abc", new Integer(2));//compilation failure
}
}
主程序内部编译失败。说找
pp<? extends java.lang.Object,? extends java.lang.Object>
但找到了
java.lang.String,java.lang.Integer
如何解决?
你没有pp
,你有两个参数。
将它们放入您的对象类型中:my.f(new pp<>("abc", new Integer(2)))
。
因为您传递的是文字参数(字符串和整数)而不是传递 pp
的对象。
尝试my.f(new pp<>("abc", new Integer(2)))
旁注:使用