La mise en œuvre de Comparable avec une classe générique

Je veux définir une classe qui implémente le générique de l'interface Comparable. Alors que dans ma classe, j'ai également défini un type générique élément T. Afin de mettre en œuvre l'interface, j'ai délégué la comparaison de T. Voici mon code:

public class Item<T extends Comparable<T>> implements Comparable<Item> {

    private int s;
    private T t;

    public T getT() {
        return t;
    }

    @Override
    public int compareTo(Item o) {
        return getT().compareTo(o.getT());
    }
}

Lorsque j'essaie de compiler, je reçois les informations d'erreur suivant:

Item.java:11: error: method compareTo in interface Comparable<T#2> cannot be applied to given types;
        return getT().compareTo(o.getT());
                     ^
  required: T#1
  found: Comparable
  reason: actual argument Comparable cannot be converted to T#1 by method invocation conversion
  where T#1,T#2 are type-variables:
    T#1 extends Comparable<T#1> declared in class Item
    T#2 extends Object declared in interface Comparable
1 error

Quelqu'un peut-il me dire pourquoi et comment le résoudre?

Pas sûr à 100%, mais il faut: compareTo(Item o) être compareTo(Item<T> o)?
pour de meilleurs résultats, utilisez <T extends Comparable<? super T>>
Vous devez sélectionner une réponse pour cette question.

OriginalL'auteur frank.liu | 2014-02-04