&青牛& 2020-06-05 18:13 采纳率: 0%
浏览 102

java泛型擦除相关的问题

图片说明

public class Test {


    static class Parent{

    }
    static class Son extends Parent{

    }


    public static void main(String[] args) {
        Son son = new Son();
        List<Son> list=new ArrayList<>();
        Map<Son,Collection<Parent>> map=new HashMap<>();

        test(son);

        test1(list);//报错

        test2(list);

        test3(map);//报错
    }
    public static void test(Parent parent){

    }

    public static void test1(List<Parent> parents){

    }
    public static void test2(List<? extends Parent> parents){

    }
    public static void test3(Map<? extends Parent,Collection<? extends Parent>> map){

    }

}

哪位大神知道这个报错的地方是为什么吗?

  • 写回答

1条回答 默认 最新

  • syyyyyyyyyyyyyyh 2020-06-05 22:37
    关注

    固定上边界通配符时使用extends限定类型上界的通配符
    使用extends向上限定边界,类型可以是上界类自身或其子类
    test1,方法中泛型指定了必须为Parent,用son肯定不行
    test3, 不太清楚

    评论

报告相同问题?