Dubbio classe generica

di il
19 risposte

19 Risposte - Pagina 2

  • Re: Dubbio classe generica

    In ogni caso posso solo leggere dalla lista "numeri" non posso modificarla giusto?
  • Re: Dubbio classe generica

    Giovx24 ha scritto:


    In ogni caso posso solo leggere dalla lista "numeri" non posso modificarla giusto?
    Sì, puoi solo "estrarre" come Number (o al limite supertipo, es. Object). Ma non puoi inserire nulla, eccetto un null letterale che è lecito.

    Un List<? extends Number> NON vuol dire una lista che contiene qualunque cosa è-un Number (quello è List<Number>). Vuol dire una lista di cui NON sai quale è la parametrizzazione concreta, con l'unico indizio in più che si è certi che è sicuramente una parametrizzazione Number o più "sotto".

    Non puoi inserire es. un Float. E se la lista passata fosse un <Integer> ?
    Non puoi inserire es. un Long. E se la lista passata fosse un <Double>?

    E' questo il motivo. Ma infatti un <? extends Number> serve proprio solo quando devi "estrarre" e basta. E in un metodo come quel "somma" sarebbe assolutamente sufficiente.
  • Re: Dubbio classe generica

    Ok grazie
    quindi potrei anche ordinarla?
  • Re: Dubbio classe generica

    Giovx24 ha scritto:


    quindi potrei anche ordinarla?
    No, un List<? extends Number> non lo puoi ordinare. Tanto per esempio:
    List<Integer> interi = Arrays.asList(4, 2, 8, 5, 3, 10, 7);
    List<? extends Number> numeri = interi;
    Collections.sort(numeri);     // <-- Errore di compilazione !!
  • Re: Dubbio classe generica

    Grazie ancora
Devi accedere o registrarti per scrivere nel forum
19 risposte