我在项目中遇到了一个奇怪的问题.现在我简化了问题并在这里写了一个小例子来说明我的困惑:
public class Question {
class Q1 {}
class Q2 extends Q1 {}
interface In {
void f(T t);
}
List list;
void f(In super List super Q2>> in) {
in.f(list);
}
static void g() {
Question question = new Question();
In> in1 = new In>() {
@Override
public void f(Collection o) {}
};
In> in2 = new In>() {
@Override
public void f(List o) {}
};
question.f(in1); //Error!
question.f(in2); //Error!
}
}
我的目的是使方法f(In>)更灵活.我可以将in1或in2传递给该方法.但两者都不能通过!怎么了?
也许this answer会有所帮助.但我的问题是不同的!我的通用类型是In> ;,泛型类型中的泛型类型.