from :http://blog.csdn.net/b_qxzb/article/details/47922193
1、new 对象包括2步, 1)加载类; 2)并且实例化。
2、Class的对象.getInstance(),仅仅只是实例化; 也就是说,在执行 Class的对象.getInstance() 之前一定要先加载对应的类。
[java] view plain copy //示例代码 /** * new 对象和Class的对象.getInstance()的区别?<p> * 答:<br> * 1、new 对象包括2步,<br> * 1)加载类;<br> * 2)并且实例化。<p> * * 2、Class的对象.getInstance(),仅仅只是实例化;<br> * 也就是说,在执行 Class的对象.getInstance() 之前一定要先加载对应的类。<br> * @author gzh * */ public class Main1 { /** * @param args */ public static void main(String[] args) { // Word word = new Word(); // ClassLoader classLoader = word.getClass().getClassLoader(); ClassLoader classLoader = Word.class.getClassLoader(); System.out.println(classLoader); //注:Word.class是由sun.misc.Launcher$AppClassLoader@1372a1a加载器加载的 try { Class<?> c = classLoader.loadClass(args[0]); //1、必须要先加载该类; Object o1 = c.newInstance(); //2、然后,才可以使用.newInstance()方法来新建实例对象。 Object o2 = c.newInstance(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
