java génériques erreur de compilation

J'ai le générique suivante à la classe:

public class GenericClass<E,T extends Comparable<T>>
{
    public static <E, T extends Comparable<T>> GenericClass<E, T> create()
    {
        return new GenericClass<E, T>();
    }

    private GenericClass()
    {
    }
}

Et c'est de cette façon que j'ai simplement l'utiliser:

GenericClass<MyClass, Double> set = GenericClass.create();

Eclipse compilation montre pas d'erreurs, cependant avec ant donne l'erreur suivante:

MyClass.java:19: incompatible types; no instance(s) of type variable(s) E,T exist so that GenericClass<E,T> conforms to GenericClass<MyClass,java.lang.Double>
[javac] found   : <E,T>GenericClass<E,T>
[javac] required: GenericClass<MyClass,java.lang.Double>
[javac]             GenericClass<MyClass, Double> set = GenericClass.create();

Merci!

Et SortedSetByDoubleValue est...?
Fixe... j'ai changé les noms de classe pour des raisons de simplicité
Ma suggestion est de ne pas utiliser les mêmes noms pour les types génériques dans la méthode statique de créer et de la classe. Bien que techniquement, il est légal, il peut conduire à quelques fous des erreurs difficiles à repérer. Je suggère fortement de remplacer E,T, E2 et T2 (ou autre) dans l'ensemble de la créer() définition.
pour de meilleurs résultats avec des sous-classes, la limite devrait être T extends Comparable<? super T>

OriginalL'auteur duduamar | 2011-02-04