2010-12-17 7 views
8

Trochę dziwnego wymogu.pobieranie wszystkich zmiennych statycznych z klasy do tablicy/listy

public class DummyClass{ 
    public static final DummyClass var1; 
    public static final DummyClass var2; 
    public static final DummyClass var3; 
    . 
    . 
    . 
    public static final DummyClass var100; 
} 

Teraz spoza tej klasy możemy połączyć te zmienne w pojedynczą tablicę lub listę, dzięki czemu mogę je sprawdzać? Jakbym coś zrobić jak

List<DummyClass> dummyList = *some op*; //I want value of some op. 

powinienem być w stanie uzyskać dostęp do var1 ... var100

+0

nie mogę zmienić źródło DummyClass. – Chandra

+1

Zajmę się wykorzystaniem refleksji. – Robert

+0

Czy potrafisz to wyobrazić? –

Odpowiedz

26

Można użyć refleksji:

Field[] fields = DummyClass.class.getDeclaredFields(); 
for (Field f : fields) { 
    if (Modifier.isStatic(f.getModifiers()) && isRightName(f.getName())) { 
     doWhatever(f); 
    } 
} 
+0

To działa dla mnie, dziękuję :) – Chandra

+1

@Chandra Proszę zaznaczyć poprawną odpowiedź, jeśli uważasz, że to poprawne rozwiązanie –

+0

@Cameron Nie znajduję żadnej metody isRghtName() w klasie Modyfikatora. –