Reflectively de l'accès à une variable statique dans une classe Java

J'ai pas d'autre choix que d'accéder à un ensemble de classes, je ne peux pas modifier, avec cette structure, grâce à la réflexion.
À l'aide de la méthode indiquée dans la principale méthode ci-dessous, cependant, déclenche une exception NullPointerException. Le pointeur null "tableau" dans le constructeur lors de la f1.get(null) est appelée.

Je ne suis pas en mesure d'instancier les classes à l'avance, car le seul constructeur est celui qui est affiché, ce qui est privé. Donc, il n'y a aucun moyen pour moi de définir explicitement la table.

Quelqu'un connais un moyen pour moi de reflectively appel Héritage.Un?

public class Legacy {   
    public static final Legacy A = new Legacy("A");
    public static final Legacy B = new Legacy("B");

    private String type0;
    private static Map<String, Legacy> table = new HashMap<String, Legacy>();

    private Legacy(String id) {
        type0 = id;
        table.put(type0, this);
    }

    public static void main(String[] args) throws Exception {
        Field f1 = Legacy.class.getDeclaredField("A");
        Object o = f1.get(null);    
    }
}

En avant "la Réflexion == MAUVAIS!!!"

En fait, je ne vois aucun moyen que vous pouvez accéder à l'Héritage.Un sans un NPE, de réflexion ou pas (remplacez code de réflexion avec 'Object o = Héritage.'Pour le voir). Quand j'ai essayé de l'exécution de votre code, l'exception s'est produite lors de l'initialisation de la classe.
C'est ce que je reçois pour avoir le code d'auto-mise en forme sur les sauvegardes.

OriginalL'auteur Andrew | 2009-08-10