Предположим, у меня есть следующий статический метод и интерфейс (список - 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 не имеет ограничения "super Foo". Тем не менее, я не вижу способа добавить ограничение «супер Foo». Например - следующее не разрешено:
public class MyClass<T super Foo> implements MyInterface<T> {
public void aMethod(List<T> aList) {
StaticMethod.doSomething(aList);
}
}
Есть ли способ решить эту проблему - в идеале без изменения StaticMethod
или MyInterface
?