Long.getLong() failing, returning null to valid string
-
28-10-2019 - |
Question
I've spent the past two hours debugging what seems extremely unlikely. I've stripped the method of a secondary Android Activity to exactly this:
public void onClick(View v) {
String str = "25";
long my_long = Long.getLong(str);
} // onClick (v)
And yeah, I get a crash with the good ol' NullPointerException:
09-11 02:02:50.444: ERROR/AndroidRuntime(1588): Uncaught handler: thread main exiting due to uncaught exception 09-11 02:02:50.464: ERROR/AndroidRuntime(1588): java.lang.NullPointerException
It looks like (from other tests) that Long.getLong(str) returns NULL, which is driving me bonkers. WHAT AM I MISSING?
Thanks in advance. I'm okay with stupidly missing the obvious, but my sanity is on the line.
Solution
You are missing the fact that Long.getLong(String str)
is not supposed to parse a String to a long, but rather to return a long value of a system property represented by that string. As others have suggested, what you actually need is Long.parseLong(String str)
.
OTHER TIPS
You can use Long.parseLong(String)
, instead of getLong(String)
: it will solve the problem.
I think you are using wrong function use Long.parseLong(str) then you can get the right answer.
Long.parseLong(someString) approved. Don't forget to catch NumberFormatException if there's a probability of unparsable string.
To understand this, some examples:
Long val= Long.getLong("32340");
returns: null
Long val = Long.getLong("32340", 3000);
returns: 3000
Using Long.parseLong() :
Long val = Long.parseLong("32340");
returns: 32340
The documentation describe getLong() method as :
Returns the Long value of the system property identified by string.
this is the code of the getLong() method and only get a property value defined by a string:
public static Long getLong(String string) {
if (string == null || string.length() == 0) {
return null;
}
String prop = System.getProperty(string);
if (prop == null) {
return null;
}
try {
return decode(prop);
} catch (NumberFormatException ex) {
return null;
}
}