在参数化泛型类[tuple]中实现继承时发生java复杂时间错误
在下面的代码行中,橙色[整数,字符串]橙色=新橙色<&燃气轮机;(45,“儿童”)抛出一个错误,表示类型不匹配:无法从橙色[字符串,整数]转换为橙色[整数,字符串]
他们在将参数传递给参数化泛型类时是否有任何规则,或者我是否犯了任何语法错误
package generics;
class Fruits<P>{
private P parent;
public Fruits(P parent) {
super();
this.parent = parent;
}
public void name(){
System.out.println("i am Fruit class witha value of "+parent);
}
}
class Orange<C,P> extends Fruits<P>{
private C child;
public Orange(P parent, C child) {
super(parent);
this.child = child;
}
public void name(){
System.out.println("i am Orange class witha value of "+child);
}
}
public class TuplePolyMorphism {
public static void main(String[] args) {
Fruits<String> fruit=new Fruits<String>("Fruit Family");
Orange<Integer,String> orange=new Orange<>(45, "child");
/*eclipse suggestion to rectify the above compile time error
Orange<String, Integer> orange=new Orange<>(45, "child");
*/
}
}
# 1 楼答案
交换构造函数上的参数:
要么:
或:
否则类型就不会对齐
完整解释:您已经定义了类型
Orange<C, P>
,并将其实例化为Orange<Integer, String>
,因此C=Integer,p=String。构造函数是Orange(P parent, C child)
,因此它需要一个字符串,然后是一个整数