Provare a creare un iteratore per un elenco collegato generico. Quando provo a creare un nodo "corrente" allo scopo di scorrere l'elenco basato sulla sentinella principale, ottengo un errore di tipo incompatibile. Ecco le linee relveantTipi non compatibili di Java Generatori di linker iterators
public class LinkedList<T> implements Iterable<T>
{
private node<T> headsent;
private node<T> tailsent;
public DistanceEventList()
{
headsent = new node<T>();
tailsent = new node<T>();
headsent.setnext(tailsent);
tailsent.setprevious(headsent);
}
public node<T> getheadsent()
{
return headsent;
}
...
public MyIterator<T> iterator() {
return new MyIterator<T>();
}
public class MyIterator<T> implements Iterator<T>
{
private node<T> current = getheadsent();
public T next() {
current = current.getnext();
return current.getdata();
}
private class node<T> {
private T data;
private node<T> next;
private node<T> previous;
...
public node<T> getnext()
{
return next;
}
}
}
E l'errore prodotto
LinkedList.java:65: error: incompatible types
private node<T> current = getheadsent();
required: LinkedList<T#1>.node<T#2)
found: LinkedList<T#1>.node<T#1)
Sembra che io ho introdotto due diversi tipi di T, ma io non sono molto esperto con i generici per sapere con certezza. Si spera che il codice sopra sia sufficiente per identificare l'errore (è abbastanza distrutto). Grazie!
Ah vedo, che spiega anche il motivo per cui il mio IDE stava elencando LinkedList LinkedList come. Significa anche che il nodo di classe privata {} dovrebbe essere solo un nodo chiuso privato {}? –
Matt
* "Significa anche che il nodo di classe privata {} dovrebbe essere solo nodo di chiusura privata {}" * Sì, o 'nodo di classe statica privata ' potrebbe essere più appropriato se non è effettivamente necessario fare riferimento all'oggetto esterno dall'interno del nodo. –
Radiodef