- meno importante, hai usato X come type variable. Nulla di male o errato ma convenzionalmente si usa T
Non lo sapevo, grazie!

sarebbe anche buono creare una eccezione di più alto livello che incapsula l'eccezione di più basso livello.
Quindi creo tipo "MyException extends - le varie eccezioni -"?
La creazione del file, poi, andrebbe poi in MyException o in ReaderWriter (con un metodo apposito)?

No, nel P.S. di prima non dicevo questo
Anche io non intendevo questo >.<
Nel mio caso, ritengo sia più appropriato passarlo al metodo. Il discorso è questo. Nel miniprogettino che dovrei fare adesso, devo scrivere e leggere da file solo Highscore. Avrei voluto fare una cosa più generica, di lettura e scrittura su file, in maniera tale da poter riutilizzare il codice in qualunque altro eventuale progetto...una classe di utilità appunto.

Se fai un ReaderWriter<Highscore> allora è abbastanza chiaro che quella istanza la dovrai usare solo per leggere oggetti Highscore (quindi List<Highscore>). Per trattare un'altra classe, dovrai creare un'altra istanza, parametrizzata diversamente.
Se non è questo che vuoi ... non è quello il design giusto!

Poi c'è anche la questione del filename. Se non lo passi al costruttore, allora le istanze di ReaderWriter a cosa servono? O per dire meglio: due istanze di ReaderWriter in cosa si distinguerebbero e per cosa?
Allora ho sbagliato design.
La mia idea di partenza era di fare una classe che, indipendentemente dal file e dal tipo degli elementi all'interno dello stesso, potesse leggerli, scriverli, aggiungerli...Le istanze della classe ReaderWriter non avrebbero dovuto differire, sarebbe stata solo una classe che racchiudeva dei metodi utili.

Grazie ancora del tuo tempo e della tua esperienza