Предположим, у меня есть следующий статический метод и интерфейс (список - java.util.List). Обратите внимание, что статический метод применяет "super Foo" к типу подстановочного знака в списке.
public class StaticMethod {
public static void doSomething(List<? super Foo> fooList) {
...
}
}
public interface MyInterface<T> {
public void aMethod(List<T> aList);
}
Я хотел бы иметь возможность добавить класс, реализующий интерфейс, используя статический метод следующим образом:
public class MyClass<T> implements MyInterface<T> {
public void aMethod(List<T> aList) {
StaticMethod.doSomething(aList);
}
}
Это явно выиграло ' t компилируется, потому что T не имеет ограничения "super Foo". Однако я не вижу способа добавить ограничение «super Foo». Например, следующее недопустимо:
public class MyClass<T super Foo> implements MyInterface<T> {
public void aMethod(List<T> aList) {
StaticMethod.doSomething(aList);
}
}
Есть ли способ решить эту проблему - в идеале без изменения StaticMethod
или MyInterface
?