Comment implémenter une interface avec une énumération, où l'interface s'étend Comparable?

Considérer ce code:

public interface Foo extends Comparable<Foo> {}

public enum FooImpl implements Foo {}

En raison des restrictions de type d'effacement, je reçois l'erreur suivante:

java.lang.Comparable ne peut pas être héritée avec des arguments différents: <Foo> et <FooImpl>

J'ai les exigences suivantes:

  • FooImpl doit être un enum, parce que j'ai besoin de l'utiliser comme valeur par défaut dans les annotations.
  • Le contrat de mon interface, c'est qu'il doit être comparables.

J'ai déjà essayé de l'utilisation de générique limites dans l'interface, mais ce n'est pas prise en charge par Java.

source d'informationauteur soc