Salve a tutti. Sto cercando di fare qualche classe per capire come usare una delle novità di Java 1.5, il polimorfismo parametrico.
Ho pensato di fare uno stack, siccome questa struttura dati è logica, mi serve l'aiuto di una lista e quindi di nodi, ho scritto questo codice:
codice:
public class Node <A>
{
public A chiave;
public Node next;
public Node()
{
next = null;
}
public Node(A el)
{
chiave = el;
next = null;
}
public Node(A el, SLLNode ptr)
{
chiave = el;
next = ptr;
}
}
public class List <A>
{
protected Node head;
public List()
{
head = null;
}
public void add(A el)
{
head = new Node(el,head);
}
public A deleteHead()
{
A el = head.chiave;
head = head.next;
return el;
}
}
public class Stack <A>
{
protected List lista;
public Stack()
{
lista = new SLList();
}
public void push(A el)
{
lista.add(el);
}
public A pop()
{
return lista.deleteHead();
}
}
Non so assolutamente se le interfacce dei metodi e le dichiarazioni delle variabili sono corrette, il compilatore dice che ci sono 2 errori:
incompatible types nella prima riga del deleteHead() nella List e ancora incompatible types nell'unica riga del metodo pop() di Stack.
Un'altra cosa se possibile:
non mi è chiaro in che caso si usano metodo la cui interfaccia è per esempio
codice:
public void push(A elem) //A inteso come tipo placeholder
oppure questo
codice:
public <A> A metodo()
Cioè non capisco i metodi parametrizzati come si differenziano dai non parametrizzati, non dovrebbero essere tutti del tipo della seconda riga? Ho provato sullo stack ma dà altri errori.
Ringrazio chiunque possa risolvermi un pò di questi dubbi