有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在参数化泛型类[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) 个答案

  1. # 1 楼答案

    交换构造函数上的参数:

    要么:

      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),因此它需要一个字符串,然后是一个整数