Kotlin學(xué)習(xí)筆記之 26 反射

首發(fā)于公眾號(hào): DSGtalk1989

26.反射

  • 函數(shù)引用

    我們用::加上函數(shù)名的方式表示函數(shù)的引用。

    我們有這樣一個(gè)需求,結(jié)合我們上面說(shuō)過(guò)的高階函數(shù),高階函數(shù)通常和面需要傳入的是一個(gè)函數(shù)。就比如List類的filter這個(gè)高級(jí)函數(shù)。

      public inline fun <T> Iterable<T>.filter(predicate: (T) -> Boolean): List<T> {
          return filterTo(ArrayList<T>(), predicate)
      }
    

    可以看到,需要傳入一個(gè)(T) -> Boolean的函數(shù),那么比如我們自己有定義過(guò)這樣一個(gè)函數(shù)。

    fun isOdd(x: Int) = x % 2 != 0
    

    傳入的是Int類型,得到的是推斷出來(lái)的Boolean類型,符合上面說(shuō)的(T) -> Boolean類型,這個(gè)時(shí)候我們?nèi)绾伟堰@個(gè)isOdd方法傳入給高階函數(shù)呢,就要使用到函數(shù)的引用。

    val numbers = listOf(1, 2, 3)
    println(numbers.filter(::isOdd))
    
  • ::引用對(duì)應(yīng)的對(duì)象

    類引用對(duì)應(yīng)的是MyClass::class -> KClass

    方法引用對(duì)應(yīng)的是::myFun -> KFunction<out R>

    val屬性引用對(duì)應(yīng)的是::valproperty -> KProperty,可以調(diào)用get()方法,可以獲得name屬性。

    var屬性引用對(duì)應(yīng)的是::varProperty -> KMutableProperty,除了get()方法和name屬性之外還可以調(diào)用set()方法

    針對(duì)類中的屬性引用,使用的是MyClass::property。


Kotlin學(xué)習(xí)筆記之 1 基礎(chǔ)語(yǔ)法

Kotlin學(xué)習(xí)筆記之 2 基本數(shù)據(jù)類型

Kotlin學(xué)習(xí)筆記之 3 條件控制

Kotlin學(xué)習(xí)筆記之 4 循環(huán)控制

Kotlin學(xué)習(xí)筆記之 5 類和對(duì)象

Kotlin學(xué)習(xí)筆記之 6 繼承

Kotlin學(xué)習(xí)筆記之 7 接口

Kotlin學(xué)習(xí)筆記之 8 擴(kuò)展

Kotlin學(xué)習(xí)筆記之 9 數(shù)據(jù)類與密封類

Kotlin學(xué)習(xí)筆記之 10 泛型

Kotlin學(xué)習(xí)筆記之 11 枚舉類

Kotlin學(xué)習(xí)筆記之 12 對(duì)象表達(dá)式和對(duì)象聲明

Kotlin學(xué)習(xí)筆記之 13 基礎(chǔ)操作符run、with、let、also、apply

Kotlin學(xué)習(xí)筆記之 14 包與導(dǎo)入

Kotlin學(xué)習(xí)筆記之 15 伴生對(duì)象

Kotlin學(xué)習(xí)筆記之 16 委托

Kotlin學(xué)習(xí)筆記之 17 可觀察屬性

Kotlin學(xué)習(xí)筆記之 18 函數(shù)

Kotlin學(xué)習(xí)筆記之 19 高階函數(shù)與 lambda 表達(dá)式

Kotlin學(xué)習(xí)筆記之 20 內(nèi)聯(lián)函數(shù)

Kotlin學(xué)習(xí)筆記之 21 解構(gòu)聲明

Kotlin學(xué)習(xí)筆記之 22 集合

Kotlin學(xué)習(xí)筆記之 23 相等判斷

Kotlin學(xué)習(xí)筆記之 24 操作符重載

Kotlin學(xué)習(xí)筆記之 25 異常捕捉

Kotlin學(xué)習(xí)筆記之 26 反射

Kotlin學(xué)習(xí)筆記之 27 類型別名

Kotlin學(xué)習(xí)筆記之 28 協(xié)程基礎(chǔ)

Kotlin學(xué)習(xí)筆記之 29 上下文與調(diào)度器

Kotlin學(xué)習(xí)筆記之 30 協(xié)程取消與超時(shí)

Kotlin學(xué)習(xí)筆記之 31 協(xié)程掛起函數(shù)的組合

Kotlin學(xué)習(xí)筆記之 32 協(xié)程異常處理

Kotlin學(xué)習(xí)筆記之 33 協(xié)程 & Retrofit

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容