Koltin註解之JvmSynthetic

且聽真言發表於2020-10-17

如果想一個函式給kotlin程式碼呼叫 而不給java的程式碼呼叫 ,函式上面加上這個註解即可。

@file:JvmName("IntUtils")

package com.example.annotation

@JvmSynthetic
fun Int.compare(num: Int): Int {
    return if (this > num) {
        this
    } else num
}

fun main() {
   print(2.compare(3))
}

 

轉換成Java 程式碼如下:

@JvmName(
   name = "IntUtils"
)
public final class IntUtils {
   // $FF: synthetic method
   public static final int compare(int $this$compare, int num) {
      return $this$compare > num ? $this$compare : num;
   }
}

可以發現:加上@JvmSynthetic註解後,該方法只能在Kotlin中呼叫了,在Java中會找不到這個方法 。

相關文章