PDA

Visualizza la versione completa : [JAVA] Interfaccia Comparable


fegret
25-10-2005, 21:36
Ciao a tutti...ho questo piccolo problemino che non riesco a capire da cosa sia dovuto. Voi che siete più esperti di me di sicuro saprete aiutarmi...

public class OrdList implements Comparable
{
private Elem first;

public OrdList()
{
first = null;
}

public static void main(String[] args)
{
String str = "prova";
int prova = str.compareTo("prova1");
System.out.println(prova);
}

public int compareTo(Object obj)
{
if(this==obj) return 0;
else return 1;
}

private class Elem
{
Comparable dato;
Elem next;
}
}

Questo è il mio codice.
Se io eseguo così,mi stampa -10.
Se invece metto due stringhe uguali compareTo ritorna giustamente 0.
Oppure se nel metodo compareTo al posto di return 1 metto return 3 o 5...mi ritorna -8.
Grazie in anticipo...ciao ciao

floyd
25-10-2005, 21:52
stai chiamando il metodo compareTo di String, non quello della tua classe

fegret
25-10-2005, 22:02
t ringrazio per il tuo aiuto ma ancora non c sn sulla chiamata del metodo.Come faccio a chiamare quello della mia classe?grazie ancora ciao ciao

eumene
26-10-2005, 01:46
Attenzione. L'interfaccia Comparable, ed il conseguente metodo compareTo, serve per la definizione di una relazione d'ordine su elementi di una classe (< = >).

A te, per quel che sembra, occorre ridefinire il metodo


boolean equals(Object o)

che torna vero se l'oggetto in input è uguale a quello in uso, cioè quello su cui hai chiamato equals.

LeleFT
27-10-2005, 14:26
Originariamente inviato da fegret
t ringrazio per il tuo aiuto ma ancora non c sn sulla chiamata del metodo.Come faccio a chiamare quello della mia classe?grazie ancora ciao ciao
Mi rifaccio solo a questo quote, la risposta al tuo problema principale sta (in parte) nel post di eumene.

Per utilizzare il metodo della tua classe, devi richiamarlo su oggetti della tua classe e non su oggetti di classi diverse. Stai chiamando il metodo compareTo() su un oggetto della classe String, non su un oggetto della classe OrdList.
Inoltre, non confronti i valori degli oggetti, ma i loro puntatori.


Ciao. :ciauz:

Loading