在下面的代码行Orange [Integer,String] orange = new Orange <>(45,“ child”); 引发错误,提示类型不匹配:无法从Orange [String,Integer]转换为Orange [Integer,String]
在将参数传递给参数化的泛型类时,它们是否有任何规则?或者我犯了任何语法错误?
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");
*/
}
}
交换构造函数上的参数:
任何一个:
Orange<Integer,String> orange=new Orange<>("child", 45);
或者:
public Orange(C child, P parent) { ..
否则,类型将无法排列。
完整说明:您已经定义了类型Orange<C, P>
并将其实例化为Orange<Integer, String>
,因此C = Integer和P = String。构造函数是Orange(P parent, C child)
,因此它期望一个String然后一个Integer。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句