Mam następującą klasę:
public class Test {
public static int a = 0;
public int b = 1;
}
Czy można użyć odbicia, aby uzyskać listę tylko pól statycznych? Wiem, że mogę uzyskać tablicę wszystkich pól za pomocą Test.class.getDeclaredFields()
. Ale wydaje się, że nie ma sposobu, aby określić, czy Field
instancja reprezentuje pole statyczne, czy nie.
java
reflection
static
field
Anders
źródło
źródło
Odpowiedzi:
Możesz to zrobić w ten sposób:
źródło
Przypadkowo natknąłem się na to pytanie i poczułem, że potrzebna jest aktualizacja Java 8 za pomocą strumieni:
Oczywiście ta próbka jest nieco upiększona ze względu na czytelność. W rzeczywistości prawdopodobnie napisałbyś to w ten sposób:
źródło
Jeśli możesz dodać do swojego projektu zależności typu open source, możesz również użyć FieldUtils.readDeclaredStaticField (Test.class, „a”)
źródło
To proste, możesz użyć modyfikatora, aby sprawdzić, czy pole jest statyczne, czy nie. Oto przykładowy kod dla tego rodzaju zadania.
źródło