Pregunta

He pasado las últimas dos horas depurando lo que parece extremadamente improbable. He despojado el método de una actividad de Android secundaria a exactamente esto:

public void onClick(View v) {
        String str = "25";
        long my_long = Long.getLong(str);
} // onClick (v)

Y sí, obtengo un bloqueo con la buena nullpointerexception:

09-11 02: 02: 50.444: Error/AndroidRuntime (1588): Handler no perturbado: Hilo Principal Salida debido a la excepción no captura 09-11 02: 02: 50.464: Error/AndroidRuntime (1588): java.lang.nullpointexception

Parece (de otras pruebas) que Long.getLong (STR) devuelve nulo, lo que me está impulsando locos. ¿QUÉ ME ESTOY PERDIENDO?

Gracias por adelantado. Estoy de acuerdo con que estúpidamente perdiera lo obvio, pero mi cordura está en juego.

¿Fue útil?

Solución

Te estás perdiendo el hecho de que Long.getLong(String str) no se supone que analice una cadena a una larga, sino que devuelva un valor largo de un propiedad del sistema representado por esa cadena. Como otros han sugerido, lo que realmente necesita es Long.parseLong(String str).

Otros consejos

Puedes usar Long.parseLong(String), en vez de getLong(String): resolverá el problema.

Creo que estás usando el uso de la función incorrecta Long.parselong (STR) Entonces puedes obtener la respuesta correcta.

Long.parselong (Somestring) aprobado. No olvide detectar NumberFormateException si hay una probabilidad de cadena incomparable.

Para entender esto, algunos ejemplos:

Long val= Long.getLong("32340");

devoluciones: null

Long val = Long.getLong("32340", 3000);

devoluciones: 3000

Usando Long.parselong () :

Long val  = Long.parseLong("32340");

devoluciones: 32340

La documentación describe getLong () Método AS:

Devuelve el valor largo del propiedad del sistema identificado por cadena.

Este es el código del getLong () método y solo obtenga un valor de propiedad definido por una cadena:

  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;
        }
    }

Si desea analizar una cadena a mucho tiempo, la mejor manera es usar Long.parselong () método.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top