Chiarimenti su Comparable

di il
6 risposte

Chiarimenti su Comparable

Penso di avere le idee un po' confuse, subito dopo aver studiato le interfacce il libro parlando di programmazione generica introduce l'interfaccia "Comparable".
Non capisco, se un interfaccia è una sorta di classe con SOLO metodi astratti de devono essere implementati successivamente come mai il metodo compareTo() "sa già cosa fare" dato che sa quando restituire 1,0 e -1? chi ha implementato il metodo?

6 Risposte

  • Re: Chiarimenti su Comparable

    Ecco il listato:
    public class CalculateMaxGeneric 
    {
    	public <T extends Comparable<T>> T maximum(T a, T b,T c)
    	{
    		T max =a;
    		if (b.compareTo(a)>0) max=b;
    		if (c.compareTo(b)>0) max=c;
    		return max;
    	}
    }
  • Re: Chiarimenti su Comparable

    Allora il metodo compareTo() di Comparable restituisce un intero.
    non è detto che restituisce 1,0 o -1.
    i generale se l'oggetto che invoca il metodo è più grande di quello passato come argomento restiuità un int maggiore di 0, se sono uguali 0 o se è minore un intero minore di 0;
  • Re: Chiarimenti su Comparable

    Penso di aver capito, quindi si comporterebbe così con qualsiasi metodo non implementato, per esempio se io creo un interfaccia e la chiamo "Compara", al suo interno dichiaro un metodo astratto e lo chiamo public int comparaA(), poi la estendo alla classe allo stesso modo:
    
    public class CalculateMaxGeneric
    {
       public <T extends Compara<T>> T maximum(T a, T b,T c)
       {
          T max =a;
          if (b.comparaA(a)>0) max=b;
          if (c.comparaA(b)>0) max=c;
          return max;
       }
    }
    
    dici che restituisce lo stesso un intero?
    non che voglia farlo, sarebbe inutile dato che l'interfaccia esiste già, è solo per capire come funziona Java
  • Re: Chiarimenti su Comparable

    Non ti restituisce lo stesso intero, tu devi reimplementare il metodo "astratto"

    se definisci una classe che implementa Comparable dovrai ridefinire il metodo compareTo, perchè dovrai dare il tuo ordinamento, che potrebbe essere diverso da quello "standard".

    Questo serve perchè alcune librerie ti permettono l'ordinamento automatico delle lista.
  • Re: Chiarimenti su Comparable

    Ok, ma infatti quello che non capisco è dov'è implementato il metodo compareTo? Nella classe Object?
  • Re: Chiarimenti su Comparable

    rudj87 ha scritto:


    Ok, ma infatti quello che non capisco è dov'è implementato il metodo compareTo? Nella classe Object?
    no, nell'interfaccia comparable. è implementato di default in alcune classi (string ad esempio), ma se lo implementi tu devi ridefinirne il concetto
Devi accedere o registrarti per scrivere nel forum
6 risposte