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