Jan*_*ski 1 kotlin spring-boot
在我的(2.0.0.M6)kotlin-spring启动应用程序中,当我这样做时,一切正常
fun main(args: Array<String>) {
runApplication<MyApplication>(*args)
}
Run Code Online (Sandbox Code Playgroud)
但是找不到mainClass,IDEA不允许在我这样做时运行应用程序
fun main(args: Array<String>) = runApplication<RankedApplication>(*args)
Run Code Online (Sandbox Code Playgroud)
这根本不重要,但我想知道:为什么?
runApplication不回来Unit.
签名和返回类型main 必须完全符合:
fun main(Array<String>): Unit
Run Code Online (Sandbox Code Playgroud)
runApplication但是,返回一个ConfigurableApplicationContext.
你的"主要"方法相当于:
fun main(args: Array<String>): ConfigurableApplicationContext {
return runApplication<MyApplication>(*args)
}
Run Code Online (Sandbox Code Playgroud)
因为返回类型是从表达式推导出来的 - 你可以看到这不是一个有效的入口点.
你的第一种方法有效
fun main(args: Array<String>) {
runApplication<MyApplication>(*args)
}
Run Code Online (Sandbox Code Playgroud)
是相同的
fun main(args: Array<String>): Unit {
runApplication<MyApplication>(*args)
return Unit
}
Run Code Online (Sandbox Code Playgroud)
因为Unit(单个对象)是指定none时的默认返回类型,并且在声明为return的方法的末尾隐式返回Unit.
这也是return没有参数有效的原因 - 它只是返回Unit.
如果你愿意,你可以制作一个方法来转换东西,Unit虽然这可能是过度的.
inline fun Unit(lambda: () -> Any?) {
lambda()
}
...
fun main(args: Array<String>) = Unit { runApplication<MyApplication>(*args) }
Run Code Online (Sandbox Code Playgroud)
在Java中也是如此,这可能是这个要求的来源 - 主要方法的签名必须是public static void main(String[]).
| 归档时间: |
|
| 查看次数: |
467 次 |
| 最近记录: |