Qual è la best practice accettata per le conversioni di tipo Java?

3

Qual è la migliore pratica corrente per tutte le conversioni di tipo necessarie in un'applicazione Web Java? Ad esempio, HttpServletRequest.getParameters(...) restituisce String[] , ma Hibernate non consente di utilizzare String[] in una clausola IN per una colonna numerica. Pertanto ho bisogno di convertire String[] in Long[] tramite Long.valueOf() . Qual è il modo migliore per gestire questo, a meno di riscrivere in un'altra lingua? Le persone semplicemente creano una classe piena di piccoli metodi statici per farlo?

    
posta kevin cline 25.07.2011 - 22:33
fonte

3 risposte

1

Se utilizzi un'implementazione JAX-RS come Jersey , avrai una gestione dei parametri molto migliorata e potresti mapparla direttamente a un lista.

Se non vuoi arrivare a tanto, puoi anche trucidarti come usare Guava Collections2.transform e a Function<String, Long> su una visualizzazione Arrays.asList dell'array. Non il modo più compatto, ma ogni pezzo è riutilizzabile, quindi non sarebbe così male.

    
risposta data 26.07.2011 - 08:01
fonte
6

What is the best way to handle this, short of rewriting in another language?

Sul serio? Solo perché tutti questi nuovi linguaggi hanno una sintassi compatta per la trasformazione di liste / array, non significa che l'uso di un ciclo ti infetterà con una malattia terminale o altro.

Long[] result = new Long[param.length];
for(int i=0; i<param.length; i++){
    result[i] = Long.valueOf(param[i]);
}

Lì, non era così male, vero? E sì, puoi e dovresti metterlo in un metodo di supporto statico se lo usi in più posti.

Modifica Poiché Hibernate può anche raccogliere raccolte, una versione un po 'più pulita:

List<Long> result = new ArrayList<Long>();
for(String s : param){
    result.add(Long.valueOf(s));
}
    
risposta data 26.07.2011 - 08:27
fonte
0

Apache Commons NumberUtils è il migliore. Le routine di conversione nel JDK amano lanciare un NumberFormatException su stringhe non sostituibili. Questa libreria consente di specificare un valore predefinito per l'analisi non riuscita.

    
risposta data 25.07.2011 - 23:16
fonte

Leggi altre domande sui tag