Mehrere Instanzen von statischen Variablen

Ich experimentiere mit unterschiedlichen classloadern geladen einer bestimmten Klasse, und sehen, ob die statischen Variablen, die in dieser Klasse kann über verschiedene Instanzen.

Grundsätzlich, ich versuche, code zu schreiben, für das, was Stephen C erwähnt hat in diese Antwort.

Hier sind meine Klassen:

CustomClassLoader.java

class CustomClassLoader extends ClassLoader
{
    public Class loadClass(String classname)  throws ClassNotFoundException {
        return super.loadClass(classname, true);
    }
}

Test.java (enthält die Treiber)

class Test {
        public static void main(String[] args) throws Exception {
                CustomClassLoader c1 = new CustomClassLoader();
                CustomClassLoader  c2 = new CustomClassLoader();
                Class m1, m2;

                m1 = c1.loadClass("A");
                m2 = c2.loadClass("A");

                m1.getField("b").set(null, 10);

                System.out.println(m1.getField("b").get(null));
                System.out.println(m2.getField("b").get(null));
        }

}

A.java (enthält die statische variable)

class A {
        public static int b = 5;
}

Wenn ich den Test Klasse, ich bekomme die folgende Ausgabe:

$ java Test
10
10

Erwartete ich den Ausgang auf 10 und 5. Wie kann ich den code erstellen Sie zwei Instanzen von meiner statische variable?

Hinweis: ich mache das nur zum Experimentieren und lernen - aber ich wäre daran interessiert zu wissen, wenn es könnte eine Reale Anwendung dieser.

InformationsquelleAutor AbdullahC | 2011-05-10
Schreibe einen Kommentar