Предположим, что у нас есть два общих интерфейса Java: Foo<T>
и Bar<T>
, из которых может быть много реализаций. Теперь предположим, что мы хотим, чтобы сохранить один из каждого в одном классе, и с использованием того же значения для T
, но сохранить точные реализации напечатал:Java: Установление корреляций между параметрами типа
public interface FooBar<T, TFoo extends Foo<T>, TBar extends Bar<T>> {
TFoo getFoo();
TBar getBar();
}
Выше T
используется исключительно в целях обеспечения соблюдения, что Классы TFoo
и TBar
используют один и тот же параметр. Добавление этого параметра типа в FooBar
представляется излишним по двум причинам:
FooBar
фактически не заботится оT
вообще.- Даже если бы это было так,
T
можно сделать сTFoo
иTBar
.
Таким образом, мой вопрос заключается в том, что существует способ принудительного соблюдения таких условий без загромождения списка параметров типа FooBar
. Необходимо написать FooBar<String, StringFoo, StringBar>
вместо теоретически эквивалент FooBar<StringFoo, StringBar>
выглядит уродливым для меня.
Как примечание стороны, я хотел бы видеть их, добавив синтаксис, похожий на 'публичный интерфейс FooBar , TBAR расширяет Бар > {}' на Java. –
Smallhacker
Я не думаю, что это возможно. Не с 'T' является общим. Большой вопрос +1 –
Возможный дубликат [Резервные общие параметры] (http://stackoverflow.com/questions/9684186/redundant-generic-parameters) –