Visualizzazione dei risultati da 1 a 8 su 8

Visualizzazione discussione

  1. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    In genere il <?> è un carattere universalmente adattabile in informatica. Mentro <Object> è proprio un oggetto generico di Java.

    Quindi suppongo che il carattere ? sia di uso più generale e non solo per gli oggetti, forse anche per le interfacce?

    Penso che come valga per ArrayList<String> valga per tutti gli elementi <?> in ArrayList<?>
    No, purtroppo sei (molto) fuori strada. Il wildcard (<?> e le versioni "bounded" con super/extends) è stato introdotto nei generics per un motivo ben preciso.

    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    Il seguente breve codice per la conversione da ArrayList<String> ad ArrayList<Object>
    E ... no. Non stavo parlando di fare un "banale" arrObj.addAll(arrString);

    Io stavo parlando di assegnabilità!

    Tutto nasce dal fatto che in Java questa seguente assegnazione è ok e lecita:
    codice:
    Object[] arr = new String[10];

    mentre invece questa assegnazione NON è lecita:
    codice:
    ArrayList<Object> lst = new ArrayList<String>();      // NO, ERRORE

    Detto in altro modo:
    String[] è un sottotipo di Object[]
    ma
    ArrayList<String> NON è un sottotipo di ArrayList<Object>

    C'è un motivo ben preciso perché il primo è lecito mentre il secondo no. E' proprio la "teoria" di base dei generics.


    Se mai ti dovesse interessare, c'è un bellissimo libro (io ce l'ho da molti anni, l'ho studiato tutto ): "Java Generics and Collections" della O'Reilly. Ma se fossi interessato, aspetta, non prendere l'edizione originale (del 2006) perché tra poco più di 1 mese (a Maggio) esce la 2° edizione, questa: https://www.oreilly.com/library/view...9781098136710/
    Ultima modifica di andbin; 21-03-2025 a 22:35
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.