2010-02-17 7 views
3

J'essaie de faire quelque chose comme ça, mais Java ne me laisse pas faire. Je soupçonne que je fais juste quelque chose de mal, mais je n'ai vraiment aucune idée de quoi. Il semble penser que T devrait être une classe, pas un type générique. Ma question est similaire à this one, mais pas exactement la même chose. Le point de tout ce que je veux avoir un type où je peux le comparer à d'autres choses du même sous-type sans être capable de les comparer à un autre objet PopulationMember.Pourquoi je ne peux pas le faire avec des interfaces?

Répondre

4

Essayez ceci:

public interface PopulationMember<T extends PopulationMember> extends Comparable<T> { 
    int compareTo(T o); 
    T merge(T o); 
    // Some other stuff 

} 

Lorsque vous remplissez un paramètre de type (comme vous le faites pour Comparable), vous devez fournir une classe. Si vous ne voulez pas que ce soit une classe spécifique, vous pouvez paramétrer votre interface.

+0

Cela a fonctionné parfaitement; Merci! – Jeremy

4
interface PopulationMember<T extends PopulationMember> extends Comparable<T> { 
    ... 
} 

Vous spécifiez les limites génériques sur la classe actuelle (interface), pas sur celle étendue.

Questions connexes