Visualizzazione dei risultati da 1 a 10 su 14

Visualizzazione discussione

  1. #3
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    76
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Non puoi. Le classi "generiche" (pensa alle collezioni es. ArrayList o al Optional di Java 8) fanno solo da "contenitori", non solo loro che istanziano gli oggetti. Idem per metodi "generici", non sono loro a istanziare gli oggetti. Non direttamente. Un metodo generico potrebbe ricevere una implementazione di una interfaccia "generica" che fa da "producer" di oggetti.


    Non e' un buonissimo approccio, percheè innanzitutto obbliga la classe ad avere un costruttore che riceve la stringa e poi impone alla classe di "sapere" un formato di stringa ben preciso. Se fosse una classe Persona e il formato fosse di un csv ... cosa c'entra un csv con Persona? E se saltasse fuori un altro formato che fai?

    La cosa si risolve in altro modo, ragionando meglio a livello di "design" delle classi.
    Non mi viene in mente una soluzione che garantisca un buon compromesso Efficienza/BuonaArchitettura...

    Mettiamo che io debba creare un ArrayList Oggetti Persona da file...
    Se io mi creo un primo strato che legge da File e "inietta" un'Oggetto parsificatore di Righe, potrei restituire un'array(o gia' un ArrayList) di:
    - Righe semplici (praticamente solo un Wrapper della String di readLine oppure una ClasseStatica/Singleton che restituisce stringhe)
    - Righe Csv (un Wrapper di Array di stringhe opportunamente splittate grazie ad un carattere separator oppure una ClasseStatica/Singleton che restituisce array di stringhe)
    - Altro???
    E magari inserire nel Parsificatore anche in carattere di Commento che permette di ingorare una riga...

    Poi pero' dovrei ancora "Castare" (scusa il temine improprio) il Tipo RigaCsv nel Tipo Persona e scorrere DI NUOVO l'array di Righe per copiarlo in quello di persone...

    Se poi volessi caricare anche ArrayList di Animali, Piante o Cose?

    Il modo piu' efficiente sarebbe un metodo personalizzato per ogni Classe, ma duplicherei tutto il codice:
    - OpenFile(path)
    - While(File.hasNextRow)
    --> readLine && saveOnArrayList
    - Close/FlushFile

    Una spintarella nella giusta direzione???
    Ultima modifica di Mrk31; 14-06-2016 a 12:17

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.