最近了解了下 Kotlin ,其中的很多語法糖很有意思,并且可以與 Java 無縫兼容。故嘗試在一個 SpringBoot 工程上將部分類修改為 Kotlin ,下面記錄了由 Java 改為 Kotlin 過程中遇到的坑和 Kotlin 的優缺點。
環境和版本
- Eclipse Oxygen
- JDK 8
- Kotlin 1.3.0
- Gradle 4.6
- SpringCloud Greenwich.M1
- SpringBoot 2.1.0.RELEASE
工程結構修改
- 安裝Eclipse的Kotlin插件:在Marketplace里搜索Kotlin安裝,當前版本為0.88
- 修改build.gradle,在原有基礎上添加(代碼只含添加部分)
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']
}
}
}
//應該可省略
compileKotlin {
kotlinOptions {
freeCompilerArgs = ["-Xjsr305=strict"]
jvmTarget = "1.8"
}
}
compileTestKotlin {
kotlinOptions {
freeCompilerArgs = ["-Xjsr305=strict"]
jvmTarget = "1.8"
}
}
- 原有SourceFolder “srcmainjava”,添加一個 “srcmainkotlin” 用于單獨存放Kotlin代碼
- 刷新gradle
- Eclipse設置:Windows-preferences-Kotlin-Compiler
- 切換為Kotlin透視圖
代碼轉換
自動轉換
- 在kotlin文件夾下創建與java相同的包;
- 將需要轉換的java類文件拷貝到kotlin包下;
- 在java類文件上右鍵,點擊Convert Java to Kotlin(安裝kotlin插件后);
- 進行查缺補漏,借此鞏固自己學到的Kotlin語法。
手動修改
自動轉換后還有部分代碼報錯,需要手動調整一下:
- 數組自動轉換
//java
@RequestMapping(value = "/app", method = RequestMethod.GET)
//kotlin
@RequestMapping(value = ["/app"], method = [RequestMethod.GET])
- 自動注入
//java
@Autowired
private AppService appService;
//kotlin
@Autowired
lateinit var appService: AppService
- 方法函數
//java
@RequestMapping("/slider")
public List< String > slider(){
return appService.getHomeSliders();
}
//kotlin
@RequestMapping("/slider")
fun slider() = appService.getHomeSliders()
- 其他
- Kotlin中默認對象不能為null,? 表示當前對象可以為null
- !! 表示當前對象不為null的情況下執行
- 單表達式函數:當函數返回單個表達式時,可以省略花括號并且在 = 符號之后指定代碼體即可
- 隱式返回類型:當返回值類型可由編譯器推斷時,顯式聲明返回類型可省略
小結
初步嘗試使用了Kotlin,總體上還是十分欣喜的,原因如下:
- 配置及使用方便,只需引用幾個gradle插件和jar包,然后簡單地配置下eclipse即可;
- 與Java無縫集成,上手容易,在熟悉的語法基礎上極大的簡化了其代碼,真的是Better Java;
- 空指針安全。
大家閑來無事可以了解一下。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
JAVA
+關注
關注
19文章
2957瀏覽量
104544 -
環境
+關注
關注
0文章
125瀏覽量
16195 -
代碼
+關注
關注
30文章
4744瀏覽量
68344 -
kotlin
+關注
關注
0文章
60瀏覽量
4185 -
SpringBoot
+關注
關注
0文章
173瀏覽量
167
發布評論請先 登錄
相關推薦
企業智能化轉型過程中,需要注意哪些“坑”?
競爭力。 同時,企業在智能化轉型的過程中,也會遇到各種各樣的問題,企業需要有意識去避開一些坑。在10月23日的2019全球智能化商業峰會上,美的、亞信科技、科沃斯針對智能化轉型過程中可
IAP功能實現過程遇到的坑
花了四天時間才把IAP功能做好。其中也遇到許多的坑,這次把這次IAP功能實現過程遇到的坑把它分享出來。一開始做iap的時候也是先從網上看別人
發表于 08-05 07:51
在嵌入式linux開發過程中遇到的坑
目標? 博文旨在總結自己在嵌入式linux開發過程中遇到的坑?、一些小知識點的匯總。?等哪天發展到遠離代碼了,還能回一下當年的英姿。
發表于 11-05 09:06
記錄STM32調試過程中遇到的一些坑
記錄STM32調試過程中遇到的一些坑假裝這是一個目錄?零、 CubeMX1.發現新大陸一、串口與DMA1.配置與使用2.串口中斷與DMA3.串口中斷異常二、PWM三、FDCAN1.CAN波特率
發表于 12-06 06:40
求助,官方出的MESH DEMO怎么改成了Kotlin和JAVA混和了?
對于我們大多數搞偏硬件的,一般都是用C的,對于C++,JAVA有天生的熟悉感,稍微學習一下,在官方的基礎上搞個東西難度不大,但是現在這個Kotlin是個什么鬼?語法規則完全不同了,連分號都不
發表于 09-21 07:31
分析Kotlin和Java EE的關系
java老標準設置的所有障礙。在此過程中,新時代語言Kotlin特定的構造,使的代碼更簡潔而安全。 如果您沒有閱讀本系列的前兩部分,可以在這里找到: Kotlin和
發表于 09-28 17:12
?0次下載
java開發中遇到的難點有哪些_java開發常見的問題及解決辦法
本文主要介紹的是java開發,首先介紹了java開發的過程,其次介紹了java開發中遇到的難點,
發表于 04-26 16:49
?9.4w次閱讀
Vulkan圖形處理過程中遇到的問題
在本篇文章中,我們將提到Vulkan 圖形處理過程中夾雜計算任務時遇到的各式問題。為更準確地了解我們的話題,可查看文章第一部分。
使用Kotlin替代Java重構AOSP應用
兩年前,Android 開源項目 (AOSP) 應用團隊開始使用 Kotlin 替代 Java 重構 AOSP 應用。之所以重構主要有兩個原因: 一是確保 AOSP 應用能夠遵循 Android
【保持更新】記錄單片機調試過程中遇到的坑
記錄STM32調試過程中遇到的一些坑假裝這是一個目錄?零、 CubeMX1.發現新大陸一、串口與DMA1.配置與使用2.串口中斷與DMA3.串口中斷異常二、PWM三、FDCAN1.CAN波特率
發表于 11-23 18:21
?7次下載
將其Android應用的Java代碼遷移到Kotlin
J2K,即 IntelliJ/Android Studio 中的 Java 到 Kotlin 轉換器。但 J2K 不是萬能的,遷移中的有些情況仍然很復雜。
如何用Rust通過JNI和Java進行交互
近期工作中有Rust和Java互相調用需求,這篇文章主要介紹如何用Rust通過JNI和Java進行交互,還有記錄一下開發過程中遇到的一些坑。
評論