1. package com.javabook.classloader.namespace;
  2. import com.javabook.classloader.FileSysClassLoader;
  3. import com.javabook.classloader.NetworkClassLoader;
  4. /**
  5. * @author Summer Lu
  6. * @email gmluyang@gmail.com
  7. * @date 2014-8-25
  8. *
  9. */
  10. public class ClassFromSameClassLoaderDemo {
  11. /**
  12. * @param args
  13. */
  14. public static void main(String[] args) {
  15. try {
  16. // --------------------------------------------------
  17. // File/URL
  18. // --------------------------------------------------
  19. // URL
  20. String urls = "file:\\C:\\mybin";
  21. // File
  22. String file = "C:\\mybin\\";
  23. // --------------------------------------------------
  24. // FileSysClassLoader/NetworkClassLoader
  25. // --------------------------------------------------
  26. // networkClassLoader
  27. NetworkClassLoader networkClassLoader = new NetworkClassLoader(urls);
  28. System.out.println("networkClassLoader.getParent() ->" + networkClassLoader.getParent());
  29. // fileSystemClassLoader
  30. FileSysClassLoader fileSysClassLoader = new FileSysClassLoader(file);
  31. System.out.println("fileSysClassLoader.getParent() ->" + fileSysClassLoader.getParent());
  32. // --------------------------------------------------
  33. // SimpleServiceLowerCaseImpl
  34. // --------------------------------------------------
  35. // simpleServiceLowerCaseImpl
  36. String simpleServiceLowerCaseImpl = "com.javabook.classloader.service.impl.SimpleServiceLowerCaseImpl";
  37. // simpleServiceLowerCaseImplClass1
  38. Class<?> simpleServiceLowerCaseImplClass1 = networkClassLoader.loadClass(simpleServiceLowerCaseImpl);
  39. // simpleServiceLowerCaseImplClass2
  40. Class<?> simpleServiceLowerCaseImplClass2 = networkClassLoader.loadClass(simpleServiceLowerCaseImpl);
  41. System.out.println("SimpleServiceLowerCaseImpl:");
  42. System.out.println( simpleServiceLowerCaseImplClass1.getClassLoader() + " -> " + simpleServiceLowerCaseImplClass1.getName() );
  43. System.out.println( simpleServiceLowerCaseImplClass2.getClassLoader() + " -> " + simpleServiceLowerCaseImplClass2.getName() );
  44. System.out.println( "simpleServiceLowerCaseImplClass1 == simpleServiceLowerCaseImplClass2 ? " + (simpleServiceLowerCaseImplClass1==simpleServiceLowerCaseImplClass2) );
  45. // --------------------------------------------------
  46. // SimpleServiceUpperCaseImpl
  47. // --------------------------------------------------
  48. // simpleServiceUpperCaseImpl
  49. String simpleServiceUpperCaseImpl = "com.javabook.classloader.service.impl.SimpleServiceUpperCaseImpl";
  50. // simpleServiceUpperCaseImplClass1
  51. Class<?> simpleServiceUpperCaseImplClass1 = fileSysClassLoader.loadClass(simpleServiceUpperCaseImpl);
  52. // simpleServiceUpperCaseImplClass2
  53. Class<?> simpleServiceUpperCaseImplClass2 = fileSysClassLoader.loadClass(simpleServiceUpperCaseImpl);
  54. System.out.println("\nSimpleServiceUpperCaseImpl:");
  55. System.out.println( simpleServiceUpperCaseImplClass1.getClassLoader() + " -> " + simpleServiceUpperCaseImplClass1.getName() );
  56. System.out.println( simpleServiceUpperCaseImplClass2.getClassLoader() + " -> " + simpleServiceUpperCaseImplClass2.getName() );
  57. System.out.println( "simpleServiceUpperCaseImplClass1 == simpleServiceUpperCaseImplClass2 ? " + (simpleServiceUpperCaseImplClass1==simpleServiceUpperCaseImplClass2) );
  58. } catch (Exception e) {
  59. e.printStackTrace();
  60. }
  61. }
  62. }

Console

  1. networkClassLoader.getParent() ->sun.misc.Launcher$AppClassLoader@18b4aac2
  2. fileSysClassLoader.getParent() ->sun.misc.Launcher$AppClassLoader@18b4aac2
  3. SimpleServiceLowerCaseImpl:
  4. com.javabook.classloader.NetworkClassLoader@677327b6 -> com.javabook.classloader.service.impl.SimpleServiceLowerCaseImpl
  5. com.javabook.classloader.NetworkClassLoader@677327b6 -> com.javabook.classloader.service.impl.SimpleServiceLowerCaseImpl
  6. simpleServiceLowerCaseImplClass1 == simpleServiceLowerCaseImplClass2 ? true
  7. SimpleServiceUpperCaseImpl:
  8. com.javabook.classloader.FileSysClassLoader@7f31245a -> com.javabook.classloader.service.impl.SimpleServiceUpperCaseImpl
  9. com.javabook.classloader.FileSysClassLoader@7f31245a -> com.javabook.classloader.service.impl.SimpleServiceUpperCaseImpl
  10. simpleServiceUpperCaseImplClass1 == simpleServiceUpperCaseImplClass2 ? true