Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 为什么Kotlin main vararg args:String不能直接传递给SpringBoot';什么是RUN应用程序?_Spring Boot_Kotlin - Fatal编程技术网

Spring boot 为什么Kotlin main vararg args:String不能直接传递给SpringBoot';什么是RUN应用程序?

Spring boot 为什么Kotlin main vararg args:String不能直接传递给SpringBoot';什么是RUN应用程序?,spring-boot,kotlin,Spring Boot,Kotlin,我想检查在启动SpringBoot应用程序时是否可以避免使用spread操作符 因此,与往常不同的是: fun main(args: Array<String>) { runApplication<Application>(*args) } 反编译的是: public static final ConfigurableApplicationContext runApplication(@NotNull String... args) {...} 我假设vara

我想检查在启动SpringBoot应用程序时是否可以避免使用spread操作符

因此,与往常不同的是:

fun main(args: Array<String>) {
    runApplication<Application>(*args)
}
反编译的是:

public static final ConfigurableApplicationContext runApplication(@NotNull String... args) {...}
我假设
vararg-args:String
相当于Java的
String…

有人对此有解释吗?提前谢谢

提供了以下示例:

fun <T> asList(vararg ts: T): List<T> {
    val result = ArrayList<T>()
    for (t in ts) // ts is an Array
        result.add(t)
    return result
}
fun asList(vararg ts:T):List{
val result=ArrayList()
for(ts中的t)//ts是一个数组
结果。添加(t)
返回结果
}
并指出:

在函数内部,类型为T的vararg参数以T的数组形式可见,即上面示例中的ts变量具有类型为的数组

从中我们可以看到,vararg被转换为接收它的函数内部的数组。因此,您只能通过使用
*
扩展它,将其传播到
运行应用程序

你还说:

我假设vararg args:String等同于Java的String

您正确地假设,它是等效的,但这并不意味着它是相同的

Kotlin这样做是为了解决Java造成的歧义。例如,如果您有一个
对象…
参数,并将
数组类型的单个数组传递给它。编译器应该将其作为
Array
类型的单个对象读取,还是作为
Fizz
类型的多个参数读取

在Kotlin中,通过提供(或不提供)扩展运算符*

fun main(vararg args:String)来区分这两种情况{
println(args::class.java)
运行应用程序(*args)
}
印刷品:
class[Ljava.lang.String;

像java数组这样的接缝不能传递给kotlin的vararg

public static final ConfigurableApplicationContext runApplication(@NotNull String... args) {...}
fun <T> asList(vararg ts: T): List<T> {
    val result = ArrayList<T>()
    for (t in ts) // ts is an Array
        result.add(t)
    return result
}