InstantiationException原因及解決辦法

InstantiationException原因:

java.lang.InstantiationException從字面意思上來看是說不能實例化ProductDaoImpl類,出現這種異常的原因通常情況下是由於要實例化的對象是一個接口或者是抽象類等無法被實例化的類。但是在這次的錯誤中卻是個例外,這個錯誤是由持久類Product引發的,ProductDaoImpl類是我用來查詢結果的操作方法集合,它繼承了HibernateTemplateDao類,實現了ProductDao接口,這個問題困擾了本人很久,經過網絡上的查詢得到啓發:發現產生這個錯誤的原因是持久類Product中沒有不帶參數的構造方法,因爲iBATIS在對象建立中,會使用不帶參數的構造函數來建立對象,而現在我的Product類中只有一個帶參數的構造方法以及一系列的getter/setter方法。只需要在Product類中加入一個不帶參數的構造方法,該方法不必執行任何操作,就像默認的構造方法一樣。在Hibernate中就有明確的要求:每一個持久化類都必須帶一個不帶參數的構造方法。

這裏說明一點,如果你在類中聲明瞭帶參數的構造函數,會自動覆蓋無參數的構造函數,這樣系統就無法調用無參數的構造函數實例化類,所以會出現這種錯誤。

 

解決辦法:

這個問題在使用類反射實例化某個對象時,如果這個對象不包含無參數的構造函數,也會出現這個錯誤,解決辦法是在這個要通過類反射實例化的這個類中添加一個空的無參數構造函數就可以了.


轉自: http://blog.sina.com.cn/s/blog_60dadc490100el9o.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章