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