天天看點

類、接口、函數

前言

各種專業技術名詞不斷增加,學好程式設計首先要了解技術術語,然後才可以對技術行業整體有一個大概判斷。學習中對某個知識點經常使用但是看官方文檔時還是很容易混淆,專業術語與自己已經掌握的知識對應關系。blog在于羅列 java 和 kotlin ,類、接口、函數 種類。

類、接口、函數
類、接口、函數

函數

Lambda 是一個對象。

Lambda 表達式是一個函數接口對象

lambda表達式 :block:String.()->Unit

kotlin inline 關鍵字

每次調用高階函數,會建立一個匿名内部類。 函數設定成Inline之後。函數的表達式會在編譯時候内嵌到被調用的地方,達到性能優化效果。減少類加載時機。

inline 關鍵字 函數與普通函數對比位元組碼後發現:

  1. 使用inline後 位元組碼行數減少相對于非 inline 函數所在位元組碼的類
  2. 使用inline 位元組碼中不會出現 kotlin/jvm/lambda 類的繼承,而普通函數會有繼承 kotlin/jvm/lambda 。

Intelj IDE 檢視位元組碼(java 和 kotlin 方式)

類、接口、函數

kotlin 檢視位元組碼

類、接口、函數

Kotlin 函數類型 :函數類型都有一對括号,并有傳回值

表達式 (Int)->Unit

函數式(SAM)接口

隻有一個抽象方法的接口稱為函數式接口或 SAM(單一抽象方法)接口。函數式接口可以有多個非抽象成員,但隻能有一個抽象成員。

聲明:

fun interface KRunnable {
   fun invoke()
}      

函數式接口轉換: ​​Lambda 轉化 SAM​​

問題 :

1.​​什麼是位元組碼​​​