Рассмотрим этот код:
public interface Foo extends Comparable<Foo> {}
public enum FooImpl implements Foo {}
Из-за ограничений типа стирания я получаю следующую ошибку:
java.lang.Comparable не может наследоваться с другими аргументами: <Foo>
и <FooImpl>
У меня есть следующие требования:
FooImpl
должно быть перечислением, потому что мне нужно использовать его в качестве значения по умолчанию в аннотациях.
- Контракт моего интерфейса заключается в том, что он должен быть сопоставимым.
Я уже пытался использовать общие границы в интерфейсе, но это не поддерживается в Java.