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