Long.getLong() failing, возвращающий значение null в действительную строку
Я провел последние два часа, отлаживая то, что кажется крайне маловероятным. Я отключил метод вторичной активности Android для этого:
public void onClick(View v) {
String str = "25";
long my_long = Long.getLong(str);
} // onClick (v)
И да, я получаю сбой с хорошим ol 'NullPointerException:
09-11 02: 02: 50.444: ERROR/AndroidRuntime (1588): обработчик нечистоты: выход из основного потока из-за неперехваченного исключения
09-11 02: 02: 50.464: ERROR/AndroidRuntime (1588): java.lang.NullPointerException
Похоже (из других тестов), что Long.getLong(str) возвращает NULL, что приводит меня в бешенство. ЧТО Я НЕ ПРОПУСТИТЬ?
Спасибо заранее. Я в порядке с тупым отсутствием очевидного, но мое здравомыслие находится на линии.
Ответы
Ответ 1
Вам не хватает того факта, что Long.getLong(String str)
не должен синтаксически разбирать строку до длинного, а скорее возвращать длинное значение системного свойства, представленного этой строкой. Как предполагали другие, вам действительно нужно Long.parseLong(String str)
.
Ответ 2
Вы можете использовать Long.parseLong(String)
вместо getLong(String)
: он решит проблему.
Ответ 3
Я думаю, что вы используете неправильное использование функции Long.parseLong(str), тогда вы можете получить правильный ответ.
Ответ 4
Утвержден Long.parseLong(someString). Не забудьте поймать NumberFormatException, если есть вероятность несанкционированной строки.
Ответ 5
Чтобы понять это, несколько примеров:
Long val= Long.getLong("32340");
возвращает: null
Long val = Long.getLong("32340", 3000);
возвращает: 3000
Использование Long.parseLong():
Long val = Long.parseLong("32340");
возвращает: 32340
В документации описывается метод getLong() как:
Возвращает длинное значение системного свойства , идентифицированное строкой.
это код метода getLong() и получает только значение свойства, определенное строкой:
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;
}
}
Если вы хотите проанализировать строку в Long, лучший способ - использовать метод Long.parseLong().