欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

kotlin中數(shù)據(jù)類重寫setter getter的正確方法

 更新時間:2018年06月07日 10:52:53   作者:一涯  
這篇文章主要給大家介紹了關(guān)于kotlin中數(shù)據(jù)類重寫setter getter的正確方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用kotlin具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

概述

在開發(fā)過程中,經(jīng)常會創(chuàng)建一些數(shù)據(jù)里,其沒有任何邏輯功能,僅僅來用來保存數(shù)據(jù)。在Kolin中,將這些類統(tǒng)一稱為數(shù)據(jù)類,用關(guān)鍵字data標(biāo)記。

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

編譯器會根據(jù)主構(gòu)造器中聲明的全部屬性, 自動推斷產(chǎn)生以下成員函數(shù):

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

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

前言

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

舉個例子:

data class OrderBean(val createTime: Long)

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

data class OrderBean(val _createTime: Long){
 val createTime:String
 get() = { ...do something }
}

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

正確的姿勢

有以下三種,你可以根據(jù)自己的業(yè)務(wù)邏輯和團(tuán)隊的話語權(quán)進(jìn)行選擇:

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

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Android實現(xiàn)ImageView圖片縮放和拖動

    Android實現(xiàn)ImageView圖片縮放和拖動

    這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)ImageView圖片縮放和拖動的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android自定義控件仿QQ抽屜效果

    Android自定義控件仿QQ抽屜效果

    這篇文章主要為大家詳細(xì)介紹了Android自定義控件仿QQ抽屜效果的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Android實現(xiàn)滑動刻度尺效果

    Android實現(xiàn)滑動刻度尺效果

    這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)滑動刻度尺效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • android繪制曲線和折線圖的方法

    android繪制曲線和折線圖的方法

    這篇文章主要介紹了android繪制曲線和折線圖的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • flutter實現(xiàn)一個列表下拉抽屜的示例代碼

    flutter實現(xiàn)一個列表下拉抽屜的示例代碼

    本文主要介紹了flutter實現(xiàn)一個列表下拉抽屜的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Android簡單實現(xiàn)自定義流式布局的方法

    Android簡單實現(xiàn)自定義流式布局的方法

    這篇文章主要介紹了Android簡單實現(xiàn)自定義流式布局的方法,結(jié)合實例形式分析了Android流式布局的原理與實現(xiàn)技巧,需要的朋友可以參考下
    2016-07-07
  • Android開發(fā)改變字體顏色方法

    Android開發(fā)改變字體顏色方法

    用以下方法基本上可以解決大多數(shù)字體顏色設(shè)置問題,先發(fā)一篇,后續(xù)繼續(xù)發(fā)一篇高級的,通過用戶選擇的方式,改變字體顏色。
    2015-05-05
  • Android 虛擬按鍵適配動態(tài)調(diào)整布局的方法

    Android 虛擬按鍵適配動態(tài)調(diào)整布局的方法

    今天小編就為大家分享一篇Android 虛擬按鍵適配動態(tài)調(diào)整布局的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • android自定義view實現(xiàn)鐘表效果

    android自定義view實現(xiàn)鐘表效果

    這篇文章主要為大家詳細(xì)介紹了android自定義view實現(xiàn)鐘表效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • 關(guān)于Android Studio安裝完后activity_main.xml前幾行報錯的解決建議

    關(guān)于Android Studio安裝完后activity_main.xml前幾行報錯的解決建議

    這篇文章主要介紹了關(guān)于Android Studio安裝完后activity_main.xml前幾行報錯的解決建議,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03

最新評論