黑马程序员技术交流社区

标题: 反射 实例newInstance的疑问 [打印本页]

作者: 邵镛    时间: 2014-5-24 09:48
标题: 反射 实例newInstance的疑问
代码:
  1. import java.lang.*;
  2. class A
  3. {

  4.         public static void main(String[] args) throws Exception
  5.         {
  6.                 A a = A.class.newInstance();
  7.         }

  8.         public A(int a)
  9.         {
  10.                 System.out.println("有参构造方法");
  11.         }
  12.         /*
  13.         public A()
  14.         {
  15.                 System.out.println("无参构造方法");
  16.         }
  17.         */
  18. }
复制代码


这段代码报错,如果加上注释的代码就正确。
如果类中无 无参构造方法,用类加载器Class.newInstance(),就会报错。  那这个岂不是多余吗,而且还要通过其他方法再new。  为什么不就用Constractor.newInstance(Object... initargs)呢
作者: jieyu90    时间: 2014-5-24 12:57
Class.newInstance()的设计就是为了方便调用无参构造啊,因为中间可以省去一步(获取Constructor对象)
作者: 邵镛    时间: 2014-5-24 18:06
jieyu90 发表于 2014-5-24 12:57
Class.newInstance()的设计就是为了方便调用无参构造啊,因为中间可以省去一步(获取Constructor对象) ...

有道理,明白点点了。
作者: liang090214    时间: 2014-5-24 20:26
学习学习了啊
作者: 寻找人生目标    时间: 2014-5-24 22:51
jieyu90 发表于 2014-5-24 12:57
Class.newInstance()的设计就是为了方便调用无参构造啊,因为中间可以省去一步(获取Constructor对象) ...

:L    没明白............  求教
作者: jieyu90    时间: 2014-5-25 09:48
寻找人生目标 发表于 2014-5-24 22:51
没明白............  求教

如果没有Class.newInstance()这个方法,你去调用一个类的无参构造,你只能先利用Class.getConstructor()获取Constructor对象,再利用Constructor.newInstance()调用无参构造,其实Class.newInstance()就是将这一经常使用的过程简化了一下
作者: 寻找人生目标    时间: 2014-5-25 13:13
jieyu90 发表于 2014-5-25 09:48
如果没有Class.newInstance()这个方法,你去调用一个类的无参构造,你只能先利用Class.getConstructor() ...

噢噢  明白了   那调用有参构造不可以省略中间的构造器吧  
作者: jieyu90    时间: 2014-5-26 12:37
寻找人生目标 发表于 2014-5-25 13:13
噢噢  明白了   那调用有参构造不可以省略中间的构造器吧

嗯,对的
作者: 黑马-王宁    时间: 2014-5-26 13:04
学习了!!
作者: 寻找人生目标    时间: 2014-5-26 21:30
jieyu90 发表于 2014-5-26 12:37
嗯,对的

谢谢                       
作者: yuZhe_toString    时间: 2014-5-27 12:34
学习了。。。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2