Дженерики Java: недопустимая прямая ссылка

Учитывая общий интерфейс

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> { }

что довольно уродливо, потому что оно меняет порядок общих параметров на обратный.
Есть ли какие-либо решения или обходные пути для этой проблемы?

8
задан Cephalopod 7 January 2011 в 17:52
поделиться