Usare in modo corretto le interfacce parametriche

di il
3 risposte

Usare in modo corretto le interfacce parametriche

Ragazzi non mi é per nulla chiaro a cosa servono e come si usano le interfacce parametriche... Il mio prof ha spiegato l'argomento in modo molto poco chiaro facendoci vedere delle slide con pezzi di codice... Ma qualcuno mi dice come usarlo in modo corretto? È grazie a questo che possiamo creare codice riutilizzabile giusto?

3 Risposte

  • Re: Usare in modo corretto le interfacce parametriche

    broke31 ha scritto:


    Ragazzi non mi é per nulla chiaro a cosa servono e come si usano le interfacce parametriche... Il mio prof ha spiegato l'argomento in modo molto poco chiaro facendoci vedere delle slide con pezzi di codice... Ma qualcuno mi dice come usarlo in modo corretto? È grazie a questo che possiamo creare codice riutilizzabile giusto?
    Per "interfacce parametriche" intendi le interfacce che fanno uso dei "generics" (da Java 5) e che quindi hanno una o più type variable?

    Es. java.lang.Iterable<T>
    java.util.Collection<E>
    java.util.Comparator<T>

    (le type variable sono quelle E, T)

    Se così, cosa non ti è chiaro di preciso?
  • Re: Usare in modo corretto le interfacce parametriche

    Esatto interfaccie che fanno uso dei generics...ma adesso credo di capirci un pò in più anche se ho ancora qualche piccolo dubbio, a cosa mi serve di preciso un'interfaccia cioè per adesso la sto vedendo solo come una dichiarazione di un prototipo fatta in un'altra pagina ...
  • Re: Usare in modo corretto le interfacce parametriche

    broke31 ha scritto:


    a cosa mi serve di preciso un'interfaccia cioè per adesso la sto vedendo solo come una dichiarazione di un prototipo fatta in un'altra pagina ...
    Una interfaccia in Java è un tipo completamente "astratto". Descrive solo quali sono le operazioni (metodi) che un oggetto (implementante la interfaccia) dovrà fare ma senza definire in alcun modo come tali operazioni devono essere implementate. Proprio perché la implementazione è delegata ad un sottotipo "concreto" che dovrà farsi carico di implementare realmente quei metodi. Implementando la interfaccia in classi diverse, è possibile ottenere quindi implementazioni differenti.

    Le interfacce si usano in genere per definire dei "contratti" tra entità diverse ma in generale servono per creare delle "astrazioni" con lo scopo finale di sfruttare il polimorfismo.

    Se ho un metodo che riceve un CharSequence (interfaccia disponibile da Java 1.4), al metodo posso passare un String o un StringBuffer o un StringBuilder (Java 1.5+) o altro che implementa CharSequence.
    Certo, quanto ho appena detto si poteva fare anche se CharSequence fosse stata una classe astratta ma essendo una interfaccia essa rappresenta solamente un qualcosa di astratto, "teorico". Quindi ad un livello più generico rispetto a qualunque implementazione concreta parziale o completa.
    E inoltre dal momento che Java supporta l'ereditarietà multipla di interfaccia, posso implementare CharSequence in una qualunque mia classe, anche se estende già una classe e se implementa già altre interfacce.
Devi accedere o registrarti per scrivere nel forum
3 risposte