Рассмотрим этот код:
public interface Foo extends Comparable<Foo> {}
public enum FooImpl implements Foo {}
Из-за ограничений стирания типа я получаю следующую ошибку:
java.lang.Comparable нельзя наследовать с разными аргументами:
<Foo>
и<FooImpl>
У меня следующие требования:
FooImpl
должно быть перечислением, потому что мне нужно использовать его как значение по умолчанию в аннотациях.- Контракт моего интерфейса в том, что он должен быть сопоставимым.
Я уже пробовал использовать общие границы в интерфейсе, но это не поддерживается в Java.
public interface Foo
public enum FooImpl implements Foo, Comparable<FooImpl> {...}
- person Eran Zimmerman Gonen   schedule 23.08.2011FooImpl
уже реализуетComparable<FooImpl>
. - person soc   schedule 23.08.2011Role
какComparable
, комментарий здесь не поможет. - person soc   schedule 23.08.2011public enum...
добавить://Note: implements Comparable.
- person Eran Zimmerman Gonen   schedule 23.08.2011FooImpl
- это ужасная практика именования. - person   schedule 23.08.2011public interface XXX
иpublic class YYY inherits XXX
, уже достаточно отличим от того, что что-то являетсяInterface
. Если вы не можете быстро понять, чтоXXX
- это интерфейс непосредственно из кода, вам, вероятно, не следует владеть клавиатурой. - person   schedule 23.08.2011