2017-08-18 3 views
4

En Kotlin, il est possible de nommer une méthode utilisant dos-tiques comme celui-ci:Kotlin Back-Tick s'échappe dans les noms de méthodes: Comment ça marche?

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

Le compilateur génère une méthode avec des underscores au lieu d'ébauches: « i_am_a_test_method », ce qui semble raisonnable que la machine virtuelle Java ne ne pas autoriser méthodes avec des blancs afaik. Comment peut Junit et/ou Gradle signaler ces tests avec le nom dos-coché cependant?

Répondre

5

Dans un Java method descriptor, plusieurs personnages ont une signification particulière, à savoir [()/ et ;. L'espace n'a aucune signification particulière, et par conséquent il peut être utilisé directement dans un nom de méthode; c'est exactement ce que fait le compilateur. Les espaces ne sont pas convertis en underscore.

+3

Un décompilateur Java tente de produire du code source Java valide à partir d'un fichier de classe donné. Dans un fichier source Java, il n'existe aucun moyen de représenter des espaces dans un nom de méthode, de sorte que le décompilateur les remplace par des traits de soulignement. Pour comprendre comment le compilateur Kotlin fonctionne vraiment, vous devez regarder le bytecode, pas à la sortie du décompilateur. – yole