課程
/后端開發(fā)
/Java
/Hibernate初探之單表映射
Address的無參構(gòu)造器并沒有用到,可是我實際測試時,去掉Address的無參構(gòu)造器,寫入數(shù)據(jù)會失敗,為什么?
2016-10-28
源自:Hibernate初探之單表映射 3-5
正在回答
一:在JAVA中,重寫構(gòu)造函數(shù)必須先寫一遍不帶參數(shù)的構(gòu)造方法
????在該視頻中,這里的POJO對象重寫了構(gòu)造函數(shù).,所以必須寫。
二:如果沒有重寫構(gòu)造函數(shù),可以不寫無參構(gòu)造函數(shù),因為系統(tǒng)默認是有這個方法的
三:當new一個對象的時候,已經(jīng)使用到了無參構(gòu)造函數(shù),例如:
Student student = new Student();? 這里new的時候已經(jīng)使用了無參構(gòu)造方法
慕函數(shù)9281397 提問者
未之未央丿 回復 慕函數(shù)9281397 提問者
慕函數(shù)9281397 提問者 回復 未之未央丿
5分13秒的時候 ?你看那個視頻,他有定義接收數(shù)據(jù)所用的對象模型。那你想象一下,他獲取這個數(shù)據(jù),并把數(shù)據(jù)放到Address類的里面,你認為用的方法是有參數(shù)構(gòu)造方法么? ?我個人認為是用到的new (無參數(shù)) ? ?然后應用set方法放到對象中的。這屬于 ?hibernate 底層獲取數(shù)據(jù)以后進行封裝的知識了,你可以嘗試查一下
?
還有 假如你用一些架構(gòu)的時候,像這個Hibernate,他返回數(shù)據(jù)類型的時候,假如你用Student類進行接收,那么他有可能的順序是 ?先調(diào)用一個無參數(shù)方法 ?創(chuàng)建新對象,然后進行封裝。不過這個我不確定,因為我也在看,只是我個人的理解。所以,有的時候,無參數(shù)構(gòu)造方法的調(diào)用是不經(jīng)意間的。需要記住的就是 ?無參數(shù)構(gòu)造方法 一定不可以沒有(如果不寫,默認會有)。 ? 如果你想找到 ?哪里調(diào)用了這個無參構(gòu)造方法,那你可以打個斷點看一下
Student的一個成員屬性是 ?Address類 ??
是的 ?你這樣根本不會出錯 因為你根本就沒有調(diào)用無參的構(gòu)造方法 你怎么可能出錯呢。在寫程序的時候 ?無參數(shù)的構(gòu)造方法是必須的,無論用或者不用都必須寫上。如果你就這么些 ?你創(chuàng)建對象 Student s = new Student(); ?你看看你報錯不。 ? 我都說過了 ? 就算你正常創(chuàng)建類的時候 ?如果你不寫構(gòu)造方法,編譯時,會自動給你加上一個構(gòu)造方法, 如果你寫了其他的構(gòu)造方法,那么程序就自然就不會給你加入構(gòu)造方法了。但是你一旦要是調(diào)用了無參構(gòu)造方法來創(chuàng)建對象 ? 那肯定是要報錯的啊。 ? 就好像你調(diào)用了一個沒有定義的方法 ?怎么會不報錯呢
構(gòu)造器其實就是構(gòu)造對象實例的方法,無參數(shù)的構(gòu)造方法是默認的,但是如果你創(chuàng)造了一個帶有參數(shù)的構(gòu)造方法,那么無參的構(gòu)造方法必須顯式的寫出來,否則會編譯失敗。 ?這是網(wǎng)上搜到的原話,你自己好好理解理解。不要總是懷疑別人說的,怎么和你說的完全相反呢?而且你說的這個不用懷疑 ?明明就是錯的
不應該吧。正常雖然你代碼里面不寫無參數(shù)構(gòu)造方法 ?但是編譯時 ?實際上是默認有的。所以并不會出錯的。還有一點 ?無參構(gòu)造器是必須的。盡管你不寫,編譯也會自動加入的。只不過你寫的代碼里沒有而已
舉報
Java持久化框架Hibernate入門教程,掌握Hibernate基本概念
2 回答為什么address類里面必須有無參的構(gòu)造函數(shù)啊
2 回答為什么我不定義Address的無參構(gòu)造方法 運行主程序會報錯
3 回答關于創(chuàng)建有參構(gòu)造方法
3 回答address類中為什么要把自定義構(gòu)造方法中的super();注釋掉?
3 回答重寫Address類的toString()怎么輸出address=null呢?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關注慕課網(wǎng)微信公眾號
2016-10-28
一:在JAVA中,重寫構(gòu)造函數(shù)必須先寫一遍不帶參數(shù)的構(gòu)造方法
????在該視頻中,這里的POJO對象重寫了構(gòu)造函數(shù).,所以必須寫。
二:如果沒有重寫構(gòu)造函數(shù),可以不寫無參構(gòu)造函數(shù),因為系統(tǒng)默認是有這個方法的
三:當new一個對象的時候,已經(jīng)使用到了無參構(gòu)造函數(shù),例如:
Student student = new Student();? 這里new的時候已經(jīng)使用了無參構(gòu)造方法
2016-10-31
5分13秒的時候 ?你看那個視頻,他有定義接收數(shù)據(jù)所用的對象模型。那你想象一下,他獲取這個數(shù)據(jù),并把數(shù)據(jù)放到Address類的里面,你認為用的方法是有參數(shù)構(gòu)造方法么? ?我個人認為是用到的new (無參數(shù)) ? ?然后應用set方法放到對象中的。這屬于 ?hibernate 底層獲取數(shù)據(jù)以后進行封裝的知識了,你可以嘗試查一下
?
2016-10-31
還有 假如你用一些架構(gòu)的時候,像這個Hibernate,他返回數(shù)據(jù)類型的時候,假如你用Student類進行接收,那么他有可能的順序是 ?先調(diào)用一個無參數(shù)方法 ?創(chuàng)建新對象,然后進行封裝。不過這個我不確定,因為我也在看,只是我個人的理解。所以,有的時候,無參數(shù)構(gòu)造方法的調(diào)用是不經(jīng)意間的。需要記住的就是 ?無參數(shù)構(gòu)造方法 一定不可以沒有(如果不寫,默認會有)。 ? 如果你想找到 ?哪里調(diào)用了這個無參構(gòu)造方法,那你可以打個斷點看一下
2016-10-31
Student的一個成員屬性是 ?Address類 ??
2016-10-31
是的 ?你這樣根本不會出錯 因為你根本就沒有調(diào)用無參的構(gòu)造方法 你怎么可能出錯呢。在寫程序的時候 ?無參數(shù)的構(gòu)造方法是必須的,無論用或者不用都必須寫上。如果你就這么些 ?你創(chuàng)建對象 Student s = new Student(); ?你看看你報錯不。 ? 我都說過了 ? 就算你正常創(chuàng)建類的時候 ?如果你不寫構(gòu)造方法,編譯時,會自動給你加上一個構(gòu)造方法, 如果你寫了其他的構(gòu)造方法,那么程序就自然就不會給你加入構(gòu)造方法了。但是你一旦要是調(diào)用了無參構(gòu)造方法來創(chuàng)建對象 ? 那肯定是要報錯的啊。 ? 就好像你調(diào)用了一個沒有定義的方法 ?怎么會不報錯呢
2016-10-31
構(gòu)造器其實就是構(gòu)造對象實例的方法,無參數(shù)的構(gòu)造方法是默認的,但是如果你創(chuàng)造了一個帶有參數(shù)的構(gòu)造方法,那么無參的構(gòu)造方法必須顯式的寫出來,否則會編譯失敗。 ?這是網(wǎng)上搜到的原話,你自己好好理解理解。不要總是懷疑別人說的,怎么和你說的完全相反呢?而且你說的這個不用懷疑 ?明明就是錯的
2016-10-28
不應該吧。正常雖然你代碼里面不寫無參數(shù)構(gòu)造方法 ?但是編譯時 ?實際上是默認有的。所以并不會出錯的。
還有一點 ?無參構(gòu)造器是必須的。盡管你不寫,編譯也會自動加入的。只不過你寫的代碼里沒有而已