为什么Array <string>是kotlin中主要函数的选定参数类型?

时间:2019-01-23 10:35:51

标签: java kotlin jvm

kotlin的主要功能:

fun main(args : Array<String>) { 
  println("Hello, world!") 
}

为什么要传入数组?

4 个答案:

答案 0 :(得分:5)

main的签名基于Java虚拟机expects

  

方法main必须声明为public, static, and void。它必须指定一个声明的类型为字符串数组的形式参数(第8.4.1节)。因此,可以使用以下任何一种声明:

public static void main(String[] args)
public static void main(String... args)

这是Kotlin编译器将您的主要功能编译到的内容。从Kotlin 1.3开始,显式Array<String>可以省略,但在字节码中仍然可用。

答案 1 :(得分:0)

该数组包含传递给程序的命令行参数。

您也可以忽略它,如果您不想使用它们,也可以只写:

fun main() {
  println("Hello, world!")
}

我已经太晚了,无法在此处链接到JLS for Test.mains1m0nw1 already did;我刚刚准备走了;-))

但是,尽管如此,我还是要为String的选择添加一些内容(例如,我为什么选择String):对于所有可能的命令行参数,它可能是最常见的分母。 Any / Object太宽;您只能在命令行中将数字或字符串传递给程序(管道的处理方式不同)。但是拥有数字类型太狭窄了,因此剩下的唯一可接受的类型是String,它可以表示两种类型。仍然需要解析数字,但是最好用数字来解释字符串;-)

答案 2 :(得分:0)

Collections在JAVA 1中不存在。因此,Array是默认选择。另外,命令行提供的参数均为字符串格式,因此我们使用Array<String>。为了保持与JAVA的互操作性,Kotlin遵循相同的约定。但是,随着Kotlin 1.3的更新,这一点也被省略了。现在,您可以使用main()函数,而无需传递args:Array<String>

答案 3 :(得分:0)

您正在定义应用程序的入口点。在这种情况下,应用程序将从主功能开始运行。传递参数类型为String的Array。