为什么这个 Kotlin 方法有附加的反勾?

下面的代码片段中使用的反撇号是什么?

为什么要在 fun is(amount:Int ):Boolean { ... }周围加上它们?

verifier.`is`(amount)
15641 次浏览

它允许您调用名为 Kotlin 关键字的 Java 方法。如果你省略了背签,就不会有用。

这是因为在 Kotlin is是一个保留关键字。因为 Kotlin 被认为可以与 Java 互操作,而且 is在 Java 中是一个有效的方法(标识符)名称,所以反勾被用来转义该方法,这样它就可以作为一个方法使用,而不会混淆它作为一个关键字。没有它就不能工作,因为它的语法是无效的。

这是突出的 在 Kotlin 的文件中:

在 Kotlin 用作关键字的 Java 标识符的转义

一些 Kotlin 关键字是 Java 中的有效标识符: inobjectis等。如果一个 Java 库使用 Kotlin 关键字作为一个方法,你仍然可以使用反勾(’)字符来调用方法

foo.`is`(bar)

Kotlin 名单中的 is保留字 若要使用 Kotlin 保留字(如 isobject)来表示函数/类名,应将其包装为反勾

一些 Kotlin 关键字是 Java 中的有效标识符: in、 object、 is 等。如果一个 Java 库使用 Kotlin 关键字作为一个方法,你仍然可以使用反勾(’)字符来调用方法

Https://kotlinlang.org/docs/reference/java-interop.html

反勾是一种“变通方法”,允许您调用具有代表 Kotlin 关键字的名称的方法。

Kotlinlang:

一些 Kotlin 关键字是 Java 中的有效标识符: in、 object、 is 等。如果一个 Java 库使用 Kotlin 关键字作为一个方法,你仍然可以使用反勾(’)字符来调用方法

对测试很有用

反勾在测试长函数名时非常有用:

@Test
fun `adding 3 and 4 should be equal to 7`() {
assertEquals(calculator.add(3, 4), 7)
}

这使得函数名更具可读性。我们可以在函数名中添加空格和其他特殊字符。但是,请记住只在测试中使用它,它违反了 Kotlin 常规代码的编码惯例。