0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

由Java改為 Kotlin過(guò)程中遇到的坑

科技綠洲 ? 來(lái)源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-09-30 16:51 ? 次閱讀

最近了解了下 Kotlin ,其中的很多語(yǔ)法糖很有意思,并且可以與 Java 無(wú)縫兼容。故嘗試在一個(gè) SpringBoot 工程上將部分類修改為 Kotlin ,下面記錄了由 Java 改為 Kotlin 過(guò)程中遇到的坑和 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)修改

  1. 安裝Eclipse的Kotlin插件:在Marketplace里搜索Kotlin安裝,當(dāng)前版本為0.88
  2. 修改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"
 }
}
  1. 原有SourceFolder “srcmainjava”,添加一個(gè) “srcmainkotlin” 用于單獨(dú)存放Kotlin代碼

圖片

  1. 刷新gradle
  2. Eclipse設(shè)置:Windows-preferences-Kotlin-Compiler

圖片

  1. 切換為Kotlin透視圖

圖片

代碼轉(zhuǎn)換

自動(dòng)轉(zhuǎn)換

  1. 在kotlin文件夾下創(chuàng)建與java相同的包;
  2. 將需要轉(zhuǎn)換的java類文件拷貝到kotlin包下;
  3. 在java類文件上右鍵,點(diǎn)擊Convert Java to Kotlin(安裝kotlin插件后);
  4. 進(jìn)行查缺補(bǔ)漏,借此鞏固自己學(xué)到的Kotlin語(yǔ)法。

手動(dòng)修改

自動(dòng)轉(zhuǎn)換后還有部分代碼報(bào)錯(cuò),需要手動(dòng)調(diào)整一下:

  1. 數(shù)組自動(dòng)轉(zhuǎn)換
//java
@RequestMapping(value = "/app", method = RequestMethod.GET)
//kotlin
@RequestMapping(value = ["/app"], method = [RequestMethod.GET])
  1. 自動(dòng)注入
//java
@Autowired
private AppService appService;
//kotlin
@Autowired
lateinit var appService: AppService
  1. 方法函數(shù)
//java
 @RequestMapping("/slider")
 public List< String > slider(){
  return appService.getHomeSliders();
 }
 //kotlin
 @RequestMapping("/slider")
 fun slider() = appService.getHomeSliders()
  1. 其他
  • 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,總體上還是十分欣喜的,原因如下:

  1. 配置及使用方便,只需引用幾個(gè)gradle插件和jar包,然后簡(jiǎn)單地配置下eclipse即可;
  2. 與Java無(wú)縫集成,上手容易,在熟悉的語(yǔ)法基礎(chǔ)上極大的簡(jiǎn)化了其代碼,真的是Better Java;
  3. 空指針安全。

大家閑來(lái)無(wú)事可以了解一下。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2967

    瀏覽量

    104750
  • 環(huán)境
    +關(guān)注

    關(guān)注

    0

    文章

    125

    瀏覽量

    16208
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4788

    瀏覽量

    68611
  • kotlin
    +關(guān)注

    關(guān)注

    0

    文章

    60

    瀏覽量

    4193
  • SpringBoot
    +關(guān)注

    關(guān)注

    0

    文章

    173

    瀏覽量

    179
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    企業(yè)智能化轉(zhuǎn)型過(guò)程中,需要注意哪些“”?

    競(jìng)爭(zhēng)力。 同時(shí),企業(yè)在智能化轉(zhuǎn)型的過(guò)程中,也會(huì)遇到各種各樣的問(wèn)題,企業(yè)需要有意識(shí)去避開(kāi)一些。在10月23日的2019全球智能化商業(yè)峰會(huì)上,美的、亞信科技、科沃斯針對(duì)智能化轉(zhuǎn)型過(guò)程中
    的頭像 發(fā)表于 10-31 14:36 ?5467次閱讀

    IAP功能實(shí)現(xiàn)過(guò)程遇到

    花了四天時(shí)間才把IAP功能做好。其中也遇到許多的,這次把這次IAP功能實(shí)現(xiàn)過(guò)程遇到把它分享出來(lái)。一開(kāi)始做iap的時(shí)候也是先從網(wǎng)上看別人
    發(fā)表于 08-05 07:51

    IAP功能實(shí)現(xiàn)過(guò)程中遇到

    IAP功能實(shí)現(xiàn)過(guò)程中遇到過(guò)哪些?怎樣去解決呢?
    發(fā)表于 10-25 09:11

    在嵌入式linux開(kāi)發(fā)過(guò)程中遇到

    目標(biāo)? 博文旨在總結(jié)自己在嵌入式linux開(kāi)發(fā)過(guò)程中遇到?、一些小知識(shí)點(diǎn)的匯總。?等哪天發(fā)展到遠(yuǎn)離代碼了,還能回一下當(dāng)年的英姿。
    發(fā)表于 11-05 09:06

    記錄STM32調(diào)試過(guò)程中遇到的一些

    記錄STM32調(diào)試過(guò)程中遇到的一些假裝這是一個(gè)目錄?零、 CubeMX1.發(fā)現(xiàn)新大陸一、串口與DMA1.配置與使用2.串口中斷與DMA3.串口中斷異常二、PWM三、FDCAN1.CAN波特率
    發(fā)表于 12-06 06:40

    求助,官方出的MESH DEMO怎么改成了KotlinJAVA混和了?

    對(duì)于我們大多數(shù)搞偏硬件的,一般都是用C的,對(duì)于C++,JAVA有天生的熟悉感,稍微學(xué)習(xí)一下,在官方的基礎(chǔ)上搞個(gè)東西難度不大,但是現(xiàn)在這個(gè)Kotlin是個(gè)什么鬼?語(yǔ)法規(guī)則完全不同了,連分號(hào)都不
    發(fā)表于 09-21 07:31

    分析KotlinJava EE的關(guān)系

    java老標(biāo)準(zhǔn)設(shè)置的所有障礙。在此過(guò)程中,新時(shí)代語(yǔ)言Kotlin特定的構(gòu)造,使的代碼更簡(jiǎn)潔而安全。 如果您沒(méi)有閱讀本系列的前兩部分,可以在這里找到: Kotlin
    發(fā)表于 09-28 17:12 ?0次下載
    分析<b class='flag-5'>Kotlin</b>和<b class='flag-5'>Java</b> EE的關(guān)系

    java開(kāi)發(fā)遇到的難點(diǎn)有哪些_java開(kāi)發(fā)常見(jiàn)的問(wèn)題及解決辦法

    本文主要介紹的是java開(kāi)發(fā),首先介紹了java開(kāi)發(fā)的過(guò)程,其次介紹了java開(kāi)發(fā)遇到的難點(diǎn),
    發(fā)表于 04-26 16:49 ?9.4w次閱讀

    Vulkan圖形處理過(guò)程中遇到的問(wèn)題

    在本篇文章,我們將提到Vulkan 圖形處理過(guò)程中夾雜計(jì)算任務(wù)時(shí)遇到的各式問(wèn)題。為更準(zhǔn)確地了解我們的話題,可查看文章第一部分。
    的頭像 發(fā)表于 09-04 11:45 ?2446次閱讀

    PCB在設(shè)計(jì)過(guò)程中需要注意的哪些

     PCB設(shè)計(jì)是一項(xiàng)非常精細(xì)的工作,在設(shè)計(jì)過(guò)程中有很多的細(xì)節(jié)需要大家注意,否則,一不小心就會(huì)掉“”里。
    的頭像 發(fā)表于 03-23 11:52 ?2244次閱讀

    PCB板在設(shè)計(jì)和生產(chǎn)的過(guò)程中遇到的各類問(wèn)題

    PCB板在設(shè)計(jì)和生產(chǎn)的過(guò)程中總會(huì)遇到各種各樣的問(wèn)題,比如PCB板上出現(xiàn)暗色及粒狀的接點(diǎn)、板子彎曲等。
    發(fā)表于 04-04 08:53 ?2797次閱讀

    使用Kotlin替代Java重構(gòu)AOSP應(yīng)用

    兩年前,Android 開(kāi)源項(xiàng)目 (AOSP) 應(yīng)用團(tuán)隊(duì)開(kāi)始使用 Kotlin 替代 Java 重構(gòu) AOSP 應(yīng)用。之所以重構(gòu)主要有兩個(gè)原因: 一是確保 AOSP 應(yīng)用能夠遵循 Android
    的頭像 發(fā)表于 09-16 09:26 ?1869次閱讀
    使用<b class='flag-5'>Kotlin</b>替代<b class='flag-5'>Java</b>重構(gòu)AOSP應(yīng)用

    【保持更新】記錄單片機(jī)調(diào)試過(guò)程中遇到

    記錄STM32調(diào)試過(guò)程中遇到的一些假裝這是一個(gè)目錄?零、 CubeMX1.發(fā)現(xiàn)新大陸一、串口與DMA1.配置與使用2.串口中斷與DMA3.串口中斷異常二、PWM三、FDCAN1.CAN波特率
    發(fā)表于 11-23 18:21 ?7次下載
    【保持更新】記錄單片機(jī)調(diào)試<b class='flag-5'>過(guò)程中</b><b class='flag-5'>遇到</b>的<b class='flag-5'>坑</b>

    將其Android應(yīng)用的Java代碼遷移到Kotlin

    J2K,即 IntelliJ/Android Studio JavaKotlin 轉(zhuǎn)換器。但 J2K 不是萬(wàn)能的,遷移的有些情況仍然很復(fù)雜。
    的頭像 發(fā)表于 10-28 15:15 ?729次閱讀

    如何用Rust通過(guò)JNI和Java進(jìn)行交互

    近期工作中有Rust和Java互相調(diào)用需求,這篇文章主要介紹如何用Rust通過(guò)JNI和Java進(jìn)行交互,還有記錄一下開(kāi)發(fā)過(guò)程中遇到的一些。
    的頭像 發(fā)表于 10-17 11:41 ?792次閱讀