最近了解了下 Kotlin ,其中的很多語法糖很有意思,并且可以與 Java 無縫兼容。故嘗試在一個(gè) SpringBoot 工程上將部分類修改為 Kotlin ,下面記錄了由 Java 改為 Kotlin 過程中遇到的坑和 Kotlin 的優(yōu)缺點(diǎn)。
環(huán)境和版本
- Eclipse Oxygen
- JDK 8
- Kotlin 1.3.0
- Gradle 4.6
- SpringCloud Greenwich.M1
- SpringBoot 2.1.0.RELEASE
工程結(jié)構(gòu)修改
- 安裝Eclipse的Kotlin插件:在Marketplace里搜索Kotlin安裝,當(dāng)前版本為0.88
- 修改build.gradle,在原有基礎(chǔ)上添加(代碼只含添加部分)
buildscript {
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}")
classpath("org.jetbrains.kotlin:kotlin-allopen:${kotlinVersion}")
}
apply plugin: 'kotlin'
apply plugin: 'kotlin-spring'
dependencies {
implementation('com.fasterxml.jackson.module:jackson-module-kotlin')
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("org.jetbrains.kotlin:kotlin-reflect")
}
sourceSets {
main {
java {
srcDirs = ['src/main/java', 'src/main/kotlin']
}
}
}
//應(yīng)該可省略
compileKotlin {
kotlinOptions {
freeCompilerArgs = ["-Xjsr305=strict"]
jvmTarget = "1.8"
}
}
compileTestKotlin {
kotlinOptions {
freeCompilerArgs = ["-Xjsr305=strict"]
jvmTarget = "1.8"
}
}
- 原有SourceFolder “srcmainjava”,添加一個(gè) “srcmainkotlin” 用于單獨(dú)存放Kotlin代碼
- 刷新gradle
- Eclipse設(shè)置:Windows-preferences-Kotlin-Compiler
- 切換為Kotlin透視圖
代碼轉(zhuǎn)換
自動(dòng)轉(zhuǎn)換
- 在kotlin文件夾下創(chuàng)建與java相同的包;
- 將需要轉(zhuǎn)換的java類文件拷貝到kotlin包下;
- 在java類文件上右鍵,點(diǎn)擊Convert Java to Kotlin(安裝kotlin插件后);
- 進(jìn)行查缺補(bǔ)漏,借此鞏固自己學(xué)到的Kotlin語法。
手動(dòng)修改
自動(dòng)轉(zhuǎn)換后還有部分代碼報(bào)錯(cuò),需要手動(dòng)調(diào)整一下:
- 數(shù)組自動(dòng)轉(zhuǎn)換
//java
@RequestMapping(value = "/app", method = RequestMethod.GET)
//kotlin
@RequestMapping(value = ["/app"], method = [RequestMethod.GET])
- 自動(dòng)注入
//java
@Autowired
private AppService appService;
//kotlin
@Autowired
lateinit var appService: AppService
- 方法函數(shù)
//java
@RequestMapping("/slider")
public List< String > slider(){
return appService.getHomeSliders();
}
//kotlin
@RequestMapping("/slider")
fun slider() = appService.getHomeSliders()
- 其他
- Kotlin中默認(rèn)對(duì)象不能為null,? 表示當(dāng)前對(duì)象可以為null
- !! 表示當(dāng)前對(duì)象不為null的情況下執(zhí)行
- 單表達(dá)式函數(shù):當(dāng)函數(shù)返回單個(gè)表達(dá)式時(shí),可以省略花括號(hào)并且在 = 符號(hào)之后指定代碼體即可
- 隱式返回類型:當(dāng)返回值類型可由編譯器推斷時(shí),顯式聲明返回類型可省略
小結(jié)
初步嘗試使用了Kotlin,總體上還是十分欣喜的,原因如下:
- 配置及使用方便,只需引用幾個(gè)gradle插件和jar包,然后簡(jiǎn)單地配置下eclipse即可;
- 與Java無縫集成,上手容易,在熟悉的語法基礎(chǔ)上極大的簡(jiǎn)化了其代碼,真的是Better Java;
- 空指針安全。
大家閑來無事可以了解一下。
-
JAVA
+關(guān)注
關(guān)注
19文章
2976瀏覽量
105211 -
環(huán)境
+關(guān)注
關(guān)注
0文章
125瀏覽量
16242 -
代碼
+關(guān)注
關(guān)注
30文章
4835瀏覽量
69117 -
kotlin
+關(guān)注
關(guān)注
0文章
60瀏覽量
4219 -
SpringBoot
+關(guān)注
關(guān)注
0文章
174瀏覽量
201
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
企業(yè)智能化轉(zhuǎn)型過程中,需要注意哪些“坑”?
IAP功能實(shí)現(xiàn)過程遇到的坑
在嵌入式linux開發(fā)過程中遇到的坑
記錄STM32調(diào)試過程中遇到的一些坑
求助,官方出的MESH DEMO怎么改成了Kotlin和JAVA混和了?
分析Kotlin和Java EE的關(guān)系
![分析<b class='flag-5'>Kotlin</b>和<b class='flag-5'>Java</b> EE的關(guān)系](https://file.elecfans.com/web2/M00/49/E6/pYYBAGKhvHKAWdJ8AAAY2EVKvPA782.png)
java開發(fā)中遇到的難點(diǎn)有哪些_java開發(fā)常見的問題及解決辦法
Vulkan圖形處理過程中遇到的問題
PCB在設(shè)計(jì)過程中需要注意的哪些坑
PCB板在設(shè)計(jì)和生產(chǎn)的過程中遇到的各類問題
使用Kotlin替代Java重構(gòu)AOSP應(yīng)用
![使用<b class='flag-5'>Kotlin</b>替代<b class='flag-5'>Java</b>重構(gòu)AOSP應(yīng)用](https://file.elecfans.com/web2/M00/14/D0/poYBAGFCnlOASqZ9AAAVLOOUvV0986.png)
【保持更新】記錄單片機(jī)調(diào)試過程中遇到的坑
![【保持更新】記錄單片機(jī)調(diào)試<b class='flag-5'>過程中</b><b class='flag-5'>遇到</b>的<b class='flag-5'>坑</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論