代码之家  ›  专栏  ›  技术社区  ›  lannyf

为什么必须是Kotlin中的“is”[副本]

  •  0
  • lannyf  · 技术社区  · 7 年前

    这个问题已经有了答案:

    当试图将代码从Java转换为意大利浓咖啡测试的KOTLIN时,

    Java代码:

    onData(allOf(is(instanceOf(String.class)), is("Americano")))
      .perform(click());
    

    科特林代码:

    onData(allOf(`is`(instanceOf(String::class.java)),
        `is`("Americano"))).perform(click())
    

    这个 'is' 实际上是:

    public static <T> Matcher<T> is(T value) {
        return Is.is(value);
    }
    

    为什么在Kotlin中,它的语法变成了 “IS” ?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Sergio    7 年前

    is 是Kotlin中的保留关键字。用于与 爪哇 以及其他可以命名字段或方法的编程语言,比如我们使用的Kotlin中的保留字 底盘 以转义名字。例如,在您的case方法中 从Java中用回程键逃脱:

    onData(allOf(`is`(instanceOf(String::class.java)),
    `is`("Americano"))).perform(click())
    

    另一个使用 when 方法 莫基托 图书馆:

    Mockito.`when`(/*some method is called*/).thenReturn(/*return some result*/)
    

    相关文件 Calling Java code from Kotlin :

    一些KOTLIN关键字是Java中的有效标识符: 在里面 , 对象 , 如果Java库使用了一个方法的KOTLIN关键字,那么仍然可以调用用 背勾() 特点:

    foo.`is`(bar)
    
        2
  •  1
  •   hotkey    7 年前

    在Kotlin中,标识符 hard keywords (但不是软的) have to be backticked .

    如果要避免出现反勾号,可以使用其他名称为其生成实用程序扩展函数:

    fun <T> Matcher<T>.isA(value: T) = `is`(value)`