Учитывая общий интерфейс
interface Foo<A, B> { }
, я хочу написать реализацию, которая требует, чтобы A был подклассом B Итак, я хочу использовать
class Bar<A, B super A> implements Foo<A, B> { }
// --> Syntax error
или
class Bar<A extends B, B> implements Foo<A, B> { }
// --> illegal forward reference
Но единственное решение, которое, кажется, работает, это:
class Bar<B, A extends B> implements Foo<A, B> { }
что довольно уродливо, потому что оно меняет порядок общих параметров на обратный.
Есть ли какие-либо решения или обходные пути для этой проблемы?