小编Eri*_*est的帖子

Java泛型类型中的"super"关键字有什么问题

我在项目中遇到了一个奇怪的问题.现在我简化了问题并在这里写了一个小例子来说明我的困惑:

public class Question {
    class Q1 {}

    class Q2 extends Q1 {}

    interface In<T> {
        void f(T t);
    }

    List<Q2> list;

    void f(In<? super List<? super Q2>> in) {
        in.f(list);
    }

    static void g() {
        Question question = new Question();
        In<Collection<Q1>> in1 = new In<Collection<Q1>>() {
            @Override
            public void f(Collection<Q1> o) {}
        };
        In<List<Q2>> in2 = new In<List<Q2>>() {
            @Override
            public void f(List<Q2> o) {}
        };
        question.f(in1); //Error!
        question.f(in2); //Error!
    }
}
Run Code Online (Sandbox Code Playgroud)

我的目标是使该方法f(In<? super List<? super Q2>>)更灵活.我可以通过 …

java super generic-type-argument

5
推荐指数
1
解决办法
229
查看次数

标签 统计

generic-type-argument ×1

java ×1

super ×1