Generics Hell: Могу ли я создать TypeLiteral <Set <T >> с использованием обобщений?

Единственный способ заставить работать приведенный ниже универсальный метод - это передать, казалось бы, избыточныйTypeLiteral<Set<T>> параметр. Я считаю, что можно создать этот параметр программно с учетом другого параметра, но не могу понять, как это сделать.

protected <T> Key<Set<T>> bindMultibinder(
 TypeLiteral<Set<T>> superClassSet, TypeLiteral<T> superClass) {
   final Key<Set<T>> multibinderKey = Key.get(superClassSet, randomAnnotation);
   return multibinderKey;
}

Код клиента выглядит так:

bindMultibinder(new TypeLiteral<Set<A<B>>>(){}, new TypeLiteral<A<B>>(){});

Где A и B являются интерфейсами.

Если я попробую следующее (удаляяTypeLiteral<Set<T>> superClassSet параметр), я получаюjava.util.Set<T> cannot be used as a key; It is not fully specified. ошибка выполнения.

protected <T> Key<Set<T>> bindMultibinder(TypeLiteral<T> superClass) {
   final Key<Set<T>> multibinderKey = Key.get(
    new TypeLiteral<Set<T>>() {}, randomAnnotation);
   return multibinderKey;
}

Ответы на вопрос(2)

Ваш ответ на вопрос