java generics-Kompilierungsfehler

Habe ich die folgende generische Klasse:

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()
    {
    }
}

Und dies ist, wie ich es einfach:

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

Eclipse Zusammenstellung zeigt keine Fehler, allerdings - Gebäude mit ant bietet die folgende Fehlermeldung:

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();

Dank!

Und SortedSetByDoubleValue ist...?
Fixed... ich habe mich verändert die Namen der Klassen für Einfachheit
Mein Vorschlag ist, nicht die gleichen Namen für generische Typen in die statische Methode erstellen, und die Klasse. Obwohl es technisch legal sind, könnte es dazu führen, dass einige verrückte Fehler schwer zu erkennen. Ich würde stark vorschlagen, ersetzen von-E,T mit E2 und T2 (oder was auch immer) in der ganzen create() definition.
für die besten Ergebnisse mit Unterklassen, die gebunden werden sollen T extends Comparable<? super T>

InformationsquelleAutor duduamar | 2011-02-04

Schreibe einen Kommentar