Skip to content

Instantly share code, notes, and snippets.

@erichegt
Created June 20, 2012 22:22
Show Gist options
  • Save erichegt/2962587 to your computer and use it in GitHub Desktop.
Save erichegt/2962587 to your computer and use it in GitHub Desktop.
TesteComparaClasses.java
public class TesteComparaClasses {
public static void main(String[] args) throws Exception {
// cria um novo classloader a partir da pasta bin
ClassLoader loader = new URLClassLoader(new URL[] { new URL("file:bin/") }, null);
// carrega a classe pelo novo classloader
Class<?> classe = loader.loadClass("br.com.caelum.fj91.classloader.teste.ObjetoTeste");
// carrega a mesma classe pelo classloader atual, do main, o application classloader
Class<?> outraClasse = Class.forName("br.com.caelum.fj91.classloader.teste.ObjetoTeste");
// executa alguns testes
System.out.println("ClassLoader da 1a classe: " + classe.getClassLoader());
System.out.println("ClassLoader da 2a classe: " + outraClasse.getClassLoader());
System.out.println("Classes são iguais? " + (classe == outraClasse));
Object o = classe.newInstance();
classe.newInstance();
classe.newInstance();
classe.newInstance();
classe.newInstance();
Method getQuantidade = classe.getDeclaredMethod("getQuantidade");
ObjetoTeste o2 = (ObjetoTeste)outraClasse.newInstance();
outraClasse.newInstance();
outraClasse.newInstance();
System.out.println("STATIC1"+o2.getQuantidade());
System.out.println("STATIC2"+getQuantidade.invoke(o));
ObjetoTeste ot = (ObjetoTeste) o;
System.out.println(ot);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment