如果想一个函数给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中会找不到这个方法 。