Is there a better practice to convert any input number string (int, double, etc) to it's respective Wrapper object/primitive type in java?

Using `valueOf()` or `parseXXX()` methods it can achieved. but I should be knowing the underlying string format before selecting the appropriate type.

What I am doing is parsing number string to long, using the `NumberUtils` from *commons-lang.jar* as follows:

```
long longValue= (long) NumberUtils.toLong(numberString);

```

but the problem is If the `numberString` has a `double` value, then it fails to parse to number and will return `0.0` as parsed value. Only the following statement works fine for double values :

```
Long longValue = (long) NumberUtils.toDouble(numberString);

```

Is there a generic way of doing this? also I don't care about the digits after the decimal.

Thanks for reading.

**Update**

This looks elegant solution to me, suggested by @Thomas : 

`NumberFormat numberFormat = NumberFormat.getNumberInstance(); 
long longValue = numberFormat.parse(targetFieldValue).longValue();`

as the `parse()` method returns `Long` or `Double` wrapper object, It can be checked and assigned accordingly for generic use. Only catch here is that the `parse()` could throw `ParseException`, so need to be handled according to the requirement.

I've used this to solve my problem, but curious to know about any other solutions!!