为什么反射机制要依赖类的无参构造方法
2015-05-07 10:03
211 查看
本文转载http://blog.sina.com.cn/s/blog_6151984a0100kwy0.html
反射机制出现的InstantiationException异常做反射机制时,执行如下的语句:
Class class1 = Class.forName(className);
Object o1 = class1.newInstance();
出下面的异常:
Exception in thread "main" java.lang.InstantiationException: classtest.PersonServiceBean
at java.lang.Class.newInstance0(Class.java:340)
at java.lang.Class.newInstance(Class.java:308)
at classtest.JustTest.classInstanceTest(JustTest.java:33)
at classtest.JustTest.main(JustTest.java:13)
分析:
说明没有对应的Method,显然应该是没有对应的Constructor Method--无参构造方法
测试类本来没有构造方法,那么缺省JAVA会自动生成一个无参构造方法.
但后来因为测试类加入了一个有参的构造方法,这样JAVA就不再提供缺省的无参构造.
解决:
显示的定义一个无参构造方法
备注:InstantiationException也发生在对Interface,SuperClass调用反射机制实例化对象的时候.
反射机制出现的InstantiationException异常做反射机制时,执行如下的语句:
Class class1 = Class.forName(className);
Object o1 = class1.newInstance();
出下面的异常:
Exception in thread "main" java.lang.InstantiationException: classtest.PersonServiceBean
at java.lang.Class.newInstance0(Class.java:340)
at java.lang.Class.newInstance(Class.java:308)
at classtest.JustTest.classInstanceTest(JustTest.java:33)
at classtest.JustTest.main(JustTest.java:13)
进行debug调试: 程序运行到Class.class文件, try { Class[] empty = {}; final Constructor<T> c = getConstructor0(empty, Member.DECLARED); //执行到此句时,出noSuchMethod异常,跳到catch java.security.AccessController.doPrivileged (new java.security.PrivilegedAction() { public Object run() { c.setAccessible(true); return null; } }); cachedConstructor = c; } catch (NoSuchMethodException e) { //出现noSuchMethod异常 throw new InstantiationException(getName()); //抛出的是java.lang.InstantiationException } }
分析:
说明没有对应的Method,显然应该是没有对应的Constructor Method--无参构造方法
测试类本来没有构造方法,那么缺省JAVA会自动生成一个无参构造方法.
但后来因为测试类加入了一个有参的构造方法,这样JAVA就不再提供缺省的无参构造.
解决:
显示的定义一个无参构造方法
备注:InstantiationException也发生在对Interface,SuperClass调用反射机制实例化对象的时候.
相关文章推荐
- 为什么反射机制要依赖类的无参构造方法?
- 为什么反射机制要依赖类的无参构造方法
- 十五、反射机制,包括类的构建(无参构造,有参构造)、方法的获得及使用
- [java]反射机制给属性使用set方法构造对象
- JAVA 采用反射机制 获取构造方法
- 反射机制学习2(构造方法创建对象)
- [java]反射机制给属性使用set方法构造对象
- 如何使用Java的反射机制以及调用构造方法?
- PHP基于反射机制实现自动依赖注入的方法详解
- java中的反射机制,以及如何通过反射获取一个类的构造方法 ,成员变量,方法,详细。。
- JAVA反射调用无参构造、有参构造、普通方法、成员操作
- 模拟实现Struts拦截器-蕴含着代理模式,AOP,工厂模式,依赖注入,Java 反射,动态构造等机制
- 反射机制构造实例调用方法
- java中利用反射机制得到一个类的所有构造方法,成员方法机器参数的列表
- java基础之为什么java的父类一般(不是必须)要写无参构造方法
- 通过反射机制获得某个类中的属性,构造方法,方法
- 为什么Java反射对象必须有一个无参数的构造方法?
- 反射创建构造方法无参或带参类的实例对象
- 利用反射机制编写一个程序,这个程序能指定调用类的某个方法及构造方法,并把操作信息输出到控制台。
- (二)利用反射机制实例化类,获取和修改变量,获取和调用方法和构造方法