Visualizzazione dei risultati da 1 a 8 su 8

Visualizzazione discussione

  1. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Mirco993 Visualizza il messaggio
    Speravo ci fosse una maniera più semplice fornita già dalla readObject() >.<
    No, purtroppo il readObject​() da solo non ti può aiutare in questo.

    Se puoi usare almeno Java 9 c'è una funzionalità nuovissima che si potrebbe usare: la possibilità di passare un "filter" (ObjectInputFilter) al ObjectInputStream che serve per effettuare una validazione sullo stream. Questa funzionalità è stata introdotta principalmente per proteggersi dagli "attacchi" derivanti da stream fatti ad hoc per "impallare" la de-serializzazione o per altre cose malevole.

    Quote Originariamente inviata da Mirco993 Visualizza il messaggio
    Procederò con la modalità "b" da te proposta, mi sembra quella più intuitiva e che avrei fatto io.
    In entrambi i modi a) e b) che ho detto, ad un certo punto devi comunque prevedere un cast, che può naturalmente anche fallire (ClassCastException). Ed è un caso che devi considerare perché vorrebbe dire che lo stream è "malformato".

    Comunque se scegli la b) la forma del metodo (non guardare il nome, quello lo scegli tu) dovresti farla:

    public <T> List<T> deserializeItems(Class<T> aClass)

    Quindi se gli passi un class "literal" come Highscore.class (che è di tipo Class<Highscore>) il compilatore dedurrà che il tipo restituito da quella invocazione è un List<Highscore> e quindi puoi assegnare il risultato direttamente ad una variabile List<Highscore> senza alcun cast o altro che non sia type-safe.


    P.S. vedo che il file lo prendi da this.fileName, quindi avrai di certo una classe di cui crei una istanza. La type variable <T> la puoi mettere volendo a livello di classe (e il Class lo passeresti al costruttore). Dipende dal "design" che intendi fare ...
    Ultima modifica di andbin; 18-06-2018 a 21:39
    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 © 2026 vBulletin Solutions, Inc. All rights reserved.