最近,我开始学习Kotlin
并发现该main()
函数可以不带以下参数来编写:
fun main() {
dayOfWeek()
}
Run Code Online (Sandbox Code Playgroud)
这怎么可能Kotlin
?幕后在做什么?
Java
不允许我们这样做。
main的签名基于Java虚拟机的期望:
Java虚拟机通过调用某些指定类的方法main并将其传递给单个参数(该参数是字符串数组)来开始执行。
方法main必须声明为public,static和void。它必须指定一个声明的类型为String数组的形式参数(第8.4.1节)。因此,可以使用以下任何一种声明:
公共静态void main(String [] args)公共静态void main(String ... args)
因此,是的,我们应该在main
方法中定义一个数组字符串参数。但是,正如你问的那样,
这怎么可能?科特林在幕后做什么?
让我们来看看,
科特林代码
// fileName : Main.kt
fun main() {
println("Hello World!")
}
Run Code Online (Sandbox Code Playgroud)
编译的Java代码
// fileName : Main.kt
fun main() {
println("Hello World!")
}
Run Code Online (Sandbox Code Playgroud)
如您所见,在编译的Java代码中,Kotlin使用方法重载来调用main
带有String[]
参数的方法。由此,我们可以了解到Koltin只是在帮助我们节省时间并提高语法可读性。
在内部,Kotlin用String[]
参数调用main方法。
小费
如果使用的是IntelliJ IDEA,则可以使用内置的Kotlin工具查看Kotlin代码的编译Java版本。
Menu > Tools > Kotlin > Show Kotlin Bytecode
Decompile
按钮您可以从此处找到带有屏幕截图的简单指南
归档时间: |
|
查看次数: |
381 次 |
最近记录: |