Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: vector obsolete?

  1. #1

    vector obsolete?

    ragazzi netbeans mi segnala vector come obsoleto..

    cosa si dovrebbe utilizzare piuttosto? ArrayList?

    se volessi il thread-safe?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: vector obsolete?

    Originariamente inviato da xnavigator
    ragazzi netbeans mi segnala vector come obsoleto..
    Non so esattamente che messaggio di preciso ti ha indicato. Ma Vector, pur essendo tra le collezioni più "vecchie" non ha nulla di formalmente "deprecato".

    Originariamente inviato da xnavigator
    cosa si dovrebbe utilizzare piuttosto? ArrayList?
    Se fai un progetto nuovo e hai bisogno di una lista basata su array non thread-safe, va bene ArrayList.

    Originariamente inviato da xnavigator
    se volessi il thread-safe?
    Un ArrayList incapsulato in una lista che ti fornisce Collections.synchronizedList(). Unico difetto: hai un List che NON è un ArrayList!

    List<XYZ> synchList = Collections.synchronizedList(new ArrayList<XYZ>());
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    il messaggio è chiaramente inequivocabile
    Immagini allegate Immagini allegate

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da xnavigator
    il messaggio è chiaramente inequivocabile
    Sì ma probabilmente ha una sua lista configurata di classi da evidenziare come obsolete. Opzione che magari puoi pure disabilitare.

    Ripeto che Vector non è tecnicamente deprecato, quindi a usarlo non succede nulla di strano e nessun warning da un compilatore come il javac del JDK. Quindi la scelta e tua e ti ho indicato cosa si può fare prima.

    Se poi un IDE "rompe" con "ehi .. sta collezione è obsoleta", è un altro conto. Ma lo so che è vecchia. Dipende da cosa devi fare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Originariamente inviato da andbin
    Sì ma probabilmente ha una sua lista configurata di classi da evidenziare come obsolete. Opzione che magari puoi pure disabilitare.

    Ripeto che Vector non è tecnicamente deprecato, quindi a usarlo non succede nulla di strano e nessun warning da un compilatore come il javac del JDK. Quindi la scelta e tua e ti ho indicato cosa si può fare prima.
    in realtà la scelta non è mia... se l'ide di chi ha creato il java ti segnala una cosa come obsolete allora è meglio evitarla al 100%

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da xnavigator
    in realtà la scelta non è mia... se l'ide di chi ha creato il java ti segnala una cosa come obsolete allora è meglio evitarla al 100%
    Ma ripeto che dipende da cosa devi fare. Vector è anche usato in altre parti del framework (come parametro o come tipo restituito).

    Un esempio è il modello predefinito di JTable che è javax.swing.table.DefaultTableModel. Usa internamente i Vector e metodi/costruttori lo richiedono. Quindi: primo, come vedi anche se obsoleto è tuttora usato. Secondo: non farti "rompere" da un IDE ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da andbin
    Secondo: non farti "rompere" da un IDE ....
    Attualmente Netbeans si "lamenta" della System.out.println, dice che non è un buon metodo di logging. Ora posso capire il suggerimento, ma caro netbeans, se io voglio usare una System.out.println devo spiegarlo a te?

    ho disabilitato questo tipo di warning e vado tranquilla.

    L'IDE dà suggerimenti, non obbliga ad usare altri metodi

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da xnavigator
    in realtà la scelta non è mia... se l'ide di chi ha creato il java ti segnala una cosa come obsolete allora è meglio evitarla al 100%
    E' una questione che è stata trattata anche nel forum di NetBeans: http://forums.netbeans.org/ptopic30199.html

    E la conclusione è sempre quella: Vector NON E' deprecato (quindi non va evitato). E' solo stato reso "obsoleto" dall'introduzione delle List in quanto queste sono preferibili dove non vi sia necessità di avere una lista thread-safe.

    Quello dell'IDE è solo un suggerimento del tutto irrilevante, per quanto mi riguarda: non è l'IDE a decidere cosa è meglio o peggio per ciò che sto programmando.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    ragazzi ma NetBeans non era mantenuto proprio da Sun?
    cioè se proprio chi ha fatto il java ti suggerisce di non usarlo io lo ascolterei..


    per avere l'arraylist thread safe ho letto basta fare una cosa del genere:

    List list = Collections.synchronizedList(new ArrayList(...));

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da xnavigator
    cioè se proprio chi ha fatto il java ti suggerisce di non usarlo io lo ascolterei..
    Continuiamo a girare attorno allo stesso problema: NetBeans suggerisce di non usarlo perchè NetBeans "pensa" (e stiamo parlando di un programma, mica di chi lo ha creato!) che non sia il caso di usarlo... ma che ne sa NetBeans se per il tuo preciso scopo va usata una lista non thread-safe piuttosto che una thread-safe? Semplice, si basa sulla statistica: il 90% delle volte è sufficiente una lista non thread-safe? Bene, lui suggerirà sempre di non usare Vector... ma lui non lo sa se io sto programmando un'applicazione che fa parte del restante 10%...

    Come ti hanno detto in tanti, sei solo tu che sai cosa è meglio per la tua applicazione.

    Se è per questo, sono sempre gli stessi sviluppatori che hanno creato il tool di composizione grafica di NetBeans... ma ti garantisco che il codice scritto a mano è 100 volte più efficiente, più pulito, più manutenibile e più sensato di quello autogenerato. Non è che se lo produce NetBeans allora quello è la Verità Infusa sul codice Java, eh...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.