亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Kotlin 嵌套函數(shù)開發(fā)技巧詳解

 更新時間:2022年09月01日 17:04:32   作者:長安皈故里  
這篇文章主要為大家介紹了Kotlin 嵌套函數(shù)開發(fā)技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

1.嵌套函數(shù)

業(yè)務(wù)開發(fā)中,我們可能會遇到這樣一個場景:一個函數(shù)只會被某一處多次調(diào)用,且不想讓這個函數(shù)在該類的其他地方調(diào)用,這個時候就需要對這個函數(shù)的訪問性進行進一步限制。

private是無法滿足的,這個時候我們就可以使用嵌套函數(shù)提供更好的封裝:

fun test1() {
    //被限制訪問行的函數(shù)
    fun test2(content: String) {
        println(content)
    }
    test2("hahaha")
    test2("babababa")
    test2("uuuuuuu")
}

這時候,只有test1()能夠被訪問,test2()是無法被除了test1()外的其他地方進行訪問的

不過這樣test2()方法體過大會導(dǎo)致test1()方法太長,所以嵌套函數(shù)要根據(jù)具體場景選擇性使用

2.@JvmOverloads快捷實現(xiàn)函數(shù)重載

Android自定義View時,一般需要定義三個構(gòu)造方法:

class CustomView : View {
    constructor(context: Context) : super(context)
    constructor(context: Context, attributes: AttributeSet? = null) : super(context, attributes)
    constructor(context: Context, attributes: AttributeSet? = null, defStyleAttr: Int) : super(
        context,
        attributes,
        defStyleAttr
    )
}

每次自定義View都這樣寫過于麻煩,這個時候就可以借用@JvmOverloads實現(xiàn)運算符重載:

class CustomView @JvmOverloads constructor(
    context: Context,
    attributes: AttributeSet? = null,
    defStyleAttr: Int = 0
) : View(context, attributes, defStyleAttr) {
}

反編譯成java代碼看下:

可以看到,kotlin編輯器會自動幫助我們生成三個重載構(gòu)造方法。

PS:當(dāng)@JvmOverloads使用在基于已有的WebView、EditText等組件自定義View時,一定要注意第三個參數(shù)defStyleAttr默認值時不一定為0的,需要根據(jù)繼承的父類組件填充正確的參數(shù)

3.延遲初始化lateinit var

日常開發(fā)中,我們會使用lateinit var實現(xiàn)屬性的延遲初始化:

lateinit var mContent: String
mContent = "test test"

使用延遲初始化的屬性,當(dāng)我們不確定這個屬性有沒有被初始化,可以通過下面方式判斷:

//判斷mContent有沒有被初始化
if (this::mContent.isLateinit) {
    Log.i("CustomView", "test: ")
}

4.@JvmField減少屬性set和get方法的生成

定義一個變量:

var mData: String = ""

反編寫成java代碼:

可以看到編譯器會自動幫助我們生成mData的set、get方法,如果不想要編譯幫助我們生成屬性的set、get方法,可以添加@JvmField注解:

@JvmField
var mData: String = ""

反編譯成java代碼:

這樣系統(tǒng)就不會幫助我們生成get、set方法了,因為編譯器將mData的訪問修飾符改成了public

以上就是Kotlin 嵌套函數(shù)開發(fā)技巧詳解的詳細內(nèi)容,更多關(guān)于Kotlin 嵌套函數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論