激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Android - kotlin中數據類重寫setter getter的正確方法

kotlin中數據類重寫setter getter的正確方法

2022-03-01 15:20一涯 Android

這篇文章主要給大家介紹了關于kotlin中數據類重寫setter getter的正確方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用kotlin具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

概述

在開發過程中,經常會創建一些數據里,其沒有任何邏輯功能,僅僅來用來保存數據。在Kolin中,將這些類統一稱為數據類,用關鍵字data標記。

?
1
data class User(val name: String, val age: Int)

編譯器會根據主構造器中聲明的全部屬性, 自動推斷產生以下成員函數:

  • equals()/hashCode()函數對,
  • toString() 函數, 輸出格式為 “User(name=John, age=42)” ,
  • componentN() 函數群, 這些函數與類的屬性對應, 函數名中的數字 1 到 N, 與屬性的聲明順序一致,
  • copy() 函數

如果在該數據類或者基類中重寫了以上某個成員函數,將不會再自動推斷,以重寫的為準。

前言

kotlin的數據類,由于其內部封裝了getter和setter方法,極大地簡化了我們的編程代碼,但同時其不能像java那樣方便的重寫getter或者setter方法,也給大家造成了一定的麻煩。

舉個例子:

?
1
data class OrderBean(val createTime: Long)

后端返回的訂單數據中,createTime這個字段是長整型的時間戳,但是前端需要轉成yyyy-MM-dd這種格式,或者yyyy年MM月dd日這種,再或者更加友好一點,根據時間段,轉成1小時前、2天前、一周前這種,在實際開發中都是常有的情況,在Java中我們可以很方便的在getter方法中做這些處理,但是kotlin的getter方法都是內部封裝的,并不直接支持重寫,我看到網上有些答案是像這樣處理的:

?
1
2
3
4
data class OrderBean(val _createTime: Long){
 val createTime:String
 get() = { ...do something }
}

這樣處理其實并沒有真正改變createTime的值,反而會造成一些更大的麻煩,比如,數據類中自動生成的equals(),toString()等一些方法還是會沿用長整型的值,而且當你做某些值對比的時候,會產生一些不可預測的結果。

正確的姿勢

有以下三種,你可以根據自己的業務邏輯和團隊的話語權進行選擇:

  • 讓后端改:如果有可能的話,這是最合理,最恰當的方式,后端直接返回我們需要的字段形式,節省了移動端,web端,小程序端等每端各寫一套邏輯的時間,并且萬一哪段比較坑,實現出來的時間跟你們不一樣,可能你們每個都要復查一遍。另外,后端寫的話,一旦需求變更,后端處理起來要更加簡單方便。
  • 不用data class,使用常規的class:不要拘泥于建議,誰說這些數據實體類就必須要用data class的,使用IDE去自動生成,照樣可以,而且還實現了自己的完全控制。
  • 另外創建一個安全的變量:如果在團隊中實在人微言輕,有非要用data class,那就去另外創建一個變量,比如:
?
1
2
3
4
data class OrderBean(val createTime: Long){
 val createTimeShow:String
  get() = { ...do something }
}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:https://www.jianshu.com/p/aec461fae90e

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 国产一级做a爱片在线看免 日日草夜夜 | 九草在线 | 最新av免费网址 | 欧洲精品久久久久69精品 | 三人弄娇妻高潮3p视频 | 国产品久久 | 2021av视频| 国内精品久久久久久久影视红豆 | 蜜桃视频在线播放 | 中国大陆一级毛片 | a视频在线看 | 免费看性xxx高清视频自由 | 在线看三级 | 国产在线观看91一区二区三区 | 国产精品资源手机在线播放 | 成人精品| 精品成人免费一区二区三区 | japanese xxxxhd| 国产毛片aaa一区二区三区视频 | 日本精品久久久一区二区三区 | 色视频在线 | 国产羞羞视频在线免费观看 | 国产成人羞羞视频在线 | 成人免费毛片一 | 午夜视频国产 | 日本不卡一区二区三区在线 | 玖草| 成人网在线观看 | 亚洲第一色片 | 久久国产精品久久久久久久久久 | 国产chinesehd精品91 | 国产精品一区二区在线 | 成人福利电影在线观看 | 青青草免费观看 | 国产一区二区精品在线观看 | 91精品国产乱码久久久久久久久 | 成年人激情在线 | 中文字幕伦乱 | 免费亚洲视频在线观看 | 久久国产一级片 | 成人免费观看av |