为什么反射机制要依赖类的无参构造方法?
发布时间:2020-12-13 22:14:18  所属栏目:百科  来源:网络整理 
            导读:反射机制出现的InstantiationException异常 做反射机制时,执行如下的语句: Class class1 = Class.forName(className); Object o1 = class1.newInstance(); 出下面的异常: Exception in thread "main" java.lang. InstantiationException : classtest.PersonS
                
                
                
            
                        
  
 做反射机制时,执行如下的语句:  
Class class1 = Class.forName(className); Object o1 = class1.newInstance(); 出下面的异常: Exception in thread "main" java.lang.InstantiationException: classtest.PersonServiceBean 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) { }  
 分析:  
说明没有对应的Method,显然应该是没有对应的ConstructorMethod--无参构造方法 测试类本来没有构造方法,那么缺省JAVA会自动生成一个无参构造方法. 但后来因为测试类加入了一个有参的构造方法,这样JAVA 就不再提供缺省的无参构造.  
 解决:  
显示的定义一个无参构造方法  
 备注:InstantiationException也发生在对Interface,SuperClass调用反射机制实例化对象的时候.  
                         (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
