Hola, tengo una clase muy simple definida como esta

public class Pokus {


    public static String loginToken;
    public String neco = "neco";

    public Pokus() {
    }

    public static String getLoginToken() {
        return loginToken;
    }

    public static void setLoginToken(String loginToken) {
        Pokus.loginToken = loginToken;
    }
}

Cuando creo una instancia de esta clase

Pokus pokus = new Pokus();
pokus.setLoginToken("bla1212");

En un depurador puedo ver que el objeto pokus tiene un campo / variable llamado "neco" pero no esa variable estática "loginToken".

depurador en Android Studio

¿Hay alguna forma de ver tanto las variables estáticas como las no estáticas?

8
Adam Novakovi 21 sep. 2016 a las 14:46

3 respuestas

La mejor respuesta

El depurador lo muestra correctamente, pokus es una instancia de la clase Pokus por lo que tiene un método estándar y propiedades de la clase Pokus, los métodos estáticos y las propiedades están en la clase, no en la instancia de la clase. Las propiedades estáticas se comparten para cada objeto creado a partir de la clase Pokus (o para cada componente en el programa si son públicos) por lo que el depurador no los muestra correctamente como propiedades de una sola instancia.

Para mostrar la variable estática, examine la clase, no la instancia. Cuando el depurador se detiene en el punto de interrupción, puede usar la consola y escribir Pokus.someStaticVar y verá el valor actual. La consola está disponible en el depurador: http://imgur.com/a/nHfEo.

3
Maciej Sikora 21 sep. 2016 a las 17:33

Las variables estáticas tienen los mismos valores para todas las instancias de la clase, además se debe acceder a ellas usando class y no una instancia de la clase. En Java, cuando declaras algo como estático, estás diciendo que es un miembro de la clase, no el objeto (de ahí que solo haya uno). Por lo tanto, no tiene sentido acceder a él en el objeto, porque ese miembro de datos en particular está asociado con la clase. Esa es la razón por la que creo que el depurador no se muestra y es un comportamiento correcto

1
Shivam Jari 21 sep. 2016 a las 11:53

Gracias chicos, sabía todo esto pero no sabía que el depurador lo está tomando en consideración. Hay una opción para mostrar Configuración de campo estático> Compilación, Ejecución, Implementación> Depurador> Vistas de datos> Java

17
Adam Novakovi 22 sep. 2016 a las 08:02