Chargement d'une classe à deux reprises dans la JVM à l'aide de différents chargeurs

J'ai une question au sujet de concepts de chargement de classe. Comment charger une .fichier de classe deux fois dans la JVM. Je suis également à l'écriture d'un extrait de code que j'ai écrit pour accomplir cette..

1) Chargeur 1 code

public class MyClassLoader extends ClassLoader {

    public MyClassLoader(){
        super(MyClassLoader.class.getClassLoader());
    }

    public Class loadClass(String classname){
        try {
            return super.loadClass(classname);
        } catch (ClassNotFoundException e) {
            //TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
}

2) Chargeur 2 code

public class AnotherClassLoader extends ClassLoader {

    public AnotherClassLoader(){
        super(AnotherClassLoader.class.getClassLoader());
    }

    public Class loadClass(String classname){
        try {
            return super.loadClass(classname);
        } catch (ClassNotFoundException e) {
            //TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
}

3) Maintenant, je suis le chargement d'une classe nommée en utilisant deux différents chargeurs de classe. Je suppose que l'opération classA1==newClassA doit retourner false. Voici le code:

public static void main(String[] args) {
        MyClassLoader loader1 = new MyClassLoader();
        AnotherClassLoader newLoader = new AnotherClassLoader();
            System.out.println("Load with Custom Class Loader instance");
            Class classA1 = loader1.loadClass("com.hitesh.coreJava.A");
            System.out.println("Class Loader:::"+classA1.getClassLoader());
            Class newClassA = newLoader.loadClass("com.hitesh.coreJava.A");
            System.out.println("Class Loader:::"+newClassA.getClassLoader());
            System.out.println(classA1==newClassA);
            System.out.println(classA1.hashCode() + " , " + newClassA.hashCode());

    }

4) Résultat de l'exécution de code ci-dessus:

Charge avec Classe Personnalisée occurrence de Loader
Chargeur de classe:::soleil.misc.Lanceur$AppClassLoader@11b86e7
Chargeur de classe:::soleil.misc.Lanceur$AppClassLoader@11b86e7
vrai
1641745 , 1641745

Pourriez-vous m'expliquer ce

OriginalL'auteur Hitesh | 2013-01-10