日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java中的神奇this

發布時間:2024/4/17 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中的神奇this 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java中的神奇"this",神奇的原因事它能不用new就可以直接創造一個對象出來,后來研究發現,其實java的“this”使用時,也是"new"了一個當前的對象,不過這些操作我們看不到,因為其實是虛擬機jvm幫我們"new"了;

方法體中,有和成員變量重名的局部變量,啥都不加訪問的是局部變量,this點出來的是成員變量,super點出來的是其父類的同名成員變量;

記錄一個有趣的錯誤:

// 咨詢回復內容public String answer = "";// 咨詢回復時間public String answerDate = "";// 咨詢回復內容public String getAnswer() {return answer;}public void setAnswer(String answer) {answer = StringUtil.isBlank(answer) ? "" : answer;}// 咨詢回復時間public String getAnswerDate() {return answerDate;}public void setAnswerDate(String answerDate) {answerDate = StringUtil.isBlank(answerDate) ? "" : answerDate;}

其中,這是一個類中定義了兩個成員變量,自己手動加了對應的構造方法,以變量 answe 為例,在它的set方法中,方法體中的answer變量實際是它的入參,而不是這個類定義的那個成員變量,這樣在調用這個類,然后點set設置其這個屬性值的時候會一直是空,接口傳回頁面的值自然也是空,調試如圖:

?

問題就是出在沒有使用神奇的“this”,因為之前是手動加了對應的構造方法,變量名都是直接賦值的類定義的成員變量,現在用快捷鍵自動為這兩個成員變量添加set和get構造方法:

添加后的構造方法是:

// 咨詢回復public String getAnswer() {return answer;}public void setAnswer(String answer) {this.answer = StringUtil.isBlank(answer) ? "" : answer;}// 咨詢回復時間public String getAnswerDate() {return answerDate;}public void setAnswerDate(String answerDate) {this.answerDate = StringUtil.isBlank(answerDate) ? "" : answerDate;}

其中,還是以 answer 變量為例,構造方法的方法體中,加了“this”之后就變成了這個類的成員變量,后面進行非空判斷規避異常的處理中的 answer 變量就是該方法的入參了,區別就是這個;

這時候再通過調用接口,前端調試:

就是可以調用這個類的成員變量的get/set構造方法進行獲取和賦值了;

它的機制原理就是在”this“的時候jvm會自動"new"一個這個類的實例,然后點set這個方法;

轉載于:https://www.cnblogs.com/wmqiang/p/10557570.html

總結

以上是生活随笔為你收集整理的java中的神奇this的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。