2016-08-02 8 views
1

Ich muss meine eigene ArrayList Klasse mit Generics für eine Java-Zuweisung implementieren. Aus irgendeinem Grund erhalte ich einen inkompatiblen Typfehler, und ich bin bei meinem Versuch, anderswo Hilfe zu finden, gescheitert.Wie behebe ich die inkompatiblen Typen in meinem Code

Hier ist mein Code durch den genauen Fehler gefolgt:

public <E> boolean addItem (E item) 
{   
    if (numElements == list.length) {    
     enlarge(); 
     list [numElements] = item; 
     numElements ++; 
     return true; 
    } else {     
     list [numElements] = item; 
     numElements ++; 
     return true; 
    } 
} 

der Fehler:

ArrayList.java:91: error: incompatible types 
         list [numElements] = item; 
              ^(points at item) 
    required: E#2 
    found: E#1 
    where E#1,E#2 are type-variables: 
    E#1 extends Object declared in method <E#1>addItem(E#1) 
    E#2 extends hasKey declared in class ArrayList 

ich entschuldige mich, wenn diese an anderer Stelle beantwortet worden ist, ich bin, was einfach nicht sicher, ob ich sein sollte Suche nach der Antwort, die ich brauche.

+0

Was sind die Arten von 'liste' und' item'? –

+0

Können wir bitte Ihren vollen Klassencode haben? Es wird es viel einfacher machen –

+0

Bitte poste ein MCVE (http://stackoverflow.com/help/mcve), wenn du kannst – Bajal

Antwort

4

Basierend auf Ihrem Fehler haben Sie zwei Typvariablen namens E, eine in der Klassenstufe und eine in der Methode addItem. Sie sollten den Typparameter einfach von der addItem Methode entfernen.

ändern

public <E> boolean addItem (E item) 

zu

public boolean addItem (E item) 

Gleiches gilt auch für alle anderen nicht-statische Methoden Ihrer Klasse einen generischen Typ Parameter, die den Typ ArrayList Mitglied darstellt. Sie sollten alle den generischen Typparameter verwenden, der auf Klassenebene deklariert wurde.

+0

oder ' boolean AddItem (T-Stück)' – Andrew

+0

Dies behoben das Problem dank. –