Можно ли наложить верхнюю границу (супер-X) на именованный универсальный тип?

Предположим, у меня есть следующий статический метод и интерфейс (список - 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 ?

9
задан Nick Fortescue 4 June 2011 в 00:41
поделиться