Double Possible:
Java: une Bonne façon pour encapsuler Entier.parseInt()
comment convertir une chaîne de flotter et d'éviter d'utiliser try/catch en java?C# Int.TryParse: Int32.Méthode TryParse (String, Int32%)
La grande chose avec cette méthode, c'est qu'il ne lance pas d'exception pour les données de mauvaise qualité.
En java,
Integer.parseInt("abc")
lèvera une exception, et dans les cas où cela peut se produire beaucoup de choses performances s'en ressentiront.Est-il un moyen de contourner cela en quelque sorte, pour les cas où la performance est un problème?
La seule autre façon que je peux penser est d'exécuter l'entrée à l'encontre d'une regex, mais j'ai tester pour voir ce qui est plus rapide.
- Java: Bon moyen d'encapsuler Integer.parseInt () (5 réponses )
Réponses
Trop de publicités?Apache Commons a une classe IntegerValidator qui semble faire ce que vous voulez. Java ne fournit aucune méthode intégrée pour le faire.
Modifier - vous venez de voir votre commentaire sur les problèmes de performances associés à un élément de données d’entrée potentiellement incorrect. Je ne sais pas à l'avance comment comparer / essayer sur parseInt se compare à une regex. Je suppose que, sur la base de connaissances très limitées, les expressions rationnelles ne sont pas extrêmement performantes, comparées à try / catch, en Java.
Quoi qu'il en soit, je ferais juste ceci:
public Integer tryParse(Object obj) {
Integer retVal;
try {
retVal = Integer.parseInt(obj);
} catch (NumberFormatException nfe) {
retVal = 0; // or null if that is your preference
}
return retVal;
}