Kotlin 小科普
这里大家一个小科普,Kotlin
是完全兼容JVM
,完全无缝支持Java
,并且在您可以在Java
和 Kotlin 来回自如的切换,所以开文就借用了官方的一句话,是 Android
中的 Swift
。就好比 Swift
一样,在支持 Swift
新语法的时候,也支持 C
语法。但是我有意见了,因为我一接触后,发现这是错误的。因为它是 Java
中的 Swift
。
Kotlin Demo
请关注我的 Kotlin + Springboot Demo
: http://www.sojson.com/jc/kotlin-index.html
Springboot Application main 方法正确姿势
因为 Springboot 需要启动一个 public static
修饰的 main
方法,而 Kotlin 是取消了 static
关键词,静态方法和参数统一写在 companion object
块 internal
模块内可见,inner
内部类。
从上得到,可能觉得是这样写的:
@SpringBootApplication
@MapperScan(basePackages = arrayOf("com.sojson.mapper"))
open class Application {
companion object{
fun main(args: Array<String>) {
SpringApplication.run(Application::class.java, *args)
}
}
}
//测试调用
fun test(){
var strs : Array<String> ?=null
Application.main(strs as Array<String>)
}
但是得到的结果是:
错误: 在类 com.sojson.Application 中找不到 main 方法, 请将 main 方法定义为:
public static void main(String[] args)
否则 JavaFX 应用程序类必须扩展javafx.application.Application
有的人可能会说Idea不是可以翻译吗?我也试过了。翻译后是这样的:
@JvmStatic fun main(args: Array<String>) {
SpringApplication.run(Application::class.java, *args)
}
不知道为何是飘红的。
正确的的姿势
代码如下:
@SpringBootApplication
@MapperScan(basePackages = arrayOf("com.sojson.mapper"))
open class Application {
}
/**
* 在此我表示一下,我一边听歌,然后一边Coding,发现1个小时过去了,还是没解决这个问题?一直找不到Main方法,或者说我不是static修饰的。
* 因为Kotlin取消了 static 关键词。为了和Application统一级别,写在外面,有可能有其他想法,。
*
* 在选择启动Application的时候,请选择ApplicationKt,有红X没关系
*
* 选择错误会出现如下Exception:
* 错误: 在类 com.sojson.Application 中找不到 main 方法, 请将 main 方法定义为:
* public static void main(String[] args)
* 否则 JavaFX 应用程序类必须扩展javafx.application.Application
*/
fun main(args: Array<String>) {
SpringApplication.run(Application::class.java, *args)
}
配置如图(Run Edit Configurations):
这里有可能选择完毕后,有显示红色错误提示,请先不用管,直接运行即可。
Kotlin TO Java 翻译工具介绍
Intellij IDEA
自带的 Kotlin Bytecode
,可以把你现在写的Kotlin代码翻译成 Java 代码。有利于你的错误排查。另外Intellij IDEA
你可以翻译 Java 代码为 Kotlin 代码,大部分翻译的都没问题(Copy后粘贴即可)。
转自:https://www.sojson.com/blog/240.html