giovedì 26 giugno 2008

Da stringa a tipo primitivo in 4 righe

Visto che l'ultimo post non era abbastanza nerd, rincaro la dose.

Problema: ho due stringhe, una delle quali mi dice di che tipo è il dato contenuto nell'altra.

Soluzione merdosa: una catena di if che considera tutti i possibili tipi ammessi e quando trova quello giusto usa il metodo parse* (Integer.parseInt, Long.parseLong, etc.) appropriato.

Schifo, duecentomila righe di codice di un'idiozia rara e noiose da estendere.

Soluzione stylish:
Class[] prototype = {String.class};
Class objClass = Class.forName(type);
Constructor ctor = objClass.getConstructor(prototype);
return ctor.newInstance(new Object[]{value});
Non solo è estremamente più elegante, ma consente di ritornare oggetti di qualunque tipo che abbia un costruttore che prende una String come parametro senza toccare il codice.

Io a fare ste cose mi ci diverto veramente tanto, lo so, sono gravemente malato e dovrei farmi internare...abbiate pietà di me.

Nessun commento: