2017-08-18 14 views
4

在科特林,有可能使用回蜱这样的命名方法:Kotlin Back-Tick在方法名称中转义:它是如何工作的?

fun `i am a test method`(){ 
    Assert.assertEquals("x", "x") 
} 

编译生成带有下划线代替空白的方法:“i_am_a_test_method”,这似乎是合理的JVM确实不允许方法与空白afaik。如何Junit和/或Gradle报告这些测试与反勾号的名称虽然?

回答

5

Java method descriptor,几个字符有特殊的含义,即[()/;。该空间没有任何特殊含义,因此可以直接在方法名称中使用;这正是编译器所做的。空格不会转换为下划线。

+3

Java反编译器试图从给定的类文件中生成有效的Java源代码。在Java源文件中,无法表示方法名称中的空格,因此反编译器会用下划线替换它们。要理解Kotlin编译器的工作原理,您需要查看字节码,而不是反编译器的输出。 – yole

相关问题