0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

由Java改为 Kotlin过程中遇到的坑

科技绿洲 来源:Java技术指北 作者:Java技术指北 2023-09-30 16:51 次阅读

最近了解了下 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

工程结构修改

  1. 安装Eclipse的Kotlin插件:在Marketplace里搜索Kotlin安装,当前版本为0.88
  2. 修改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"
 }
}
  1. 原有SourceFolder “srcmainjava”,添加一个 “srcmainkotlin” 用于单独存放Kotlin代码

图片

  1. 刷新gradle
  2. Eclipse设置:Windows-preferences-Kotlin-Compiler

图片

  1. 切换为Kotlin透视图

图片

代码转换

自动转换

  1. 在kotlin文件夹下创建与java相同的包;
  2. 将需要转换的java类文件拷贝到kotlin包下;
  3. 在java类文件上右键,点击Convert Java to Kotlin(安装kotlin插件后);
  4. 进行查缺补漏,借此巩固自己学到的Kotlin语法。

手动修改

自动转换后还有部分代码报错,需要手动调整一下:

  1. 数组自动转换
//java
@RequestMapping(value = "/app", method = RequestMethod.GET)
//kotlin
@RequestMapping(value = ["/app"], method = [RequestMethod.GET])
  1. 自动注入
//java
@Autowired
private AppService appService;
//kotlin
@Autowired
lateinit var appService: AppService
  1. 方法函数
//java
 @RequestMapping("/slider")
 public List< String > slider(){
  return appService.getHomeSliders();
 }
 //kotlin
 @RequestMapping("/slider")
 fun slider() = appService.getHomeSliders()
  1. 其他
  • Kotlin中默认对象不能为null,? 表示当前对象可以为null
  • !! 表示当前对象不为null的情况下执行
  • 单表达式函数:当函数返回单个表达式时,可以省略花括号并且在 = 符号之后指定代码体即可
  • 隐式返回类型:当返回值类型可由编译器推断时,显式声明返回类型可省略

小结

初步尝试使用了Kotlin,总体上还是十分欣喜的,原因如下:

  1. 配置及使用方便,只需引用几个gradle插件和jar包,然后简单地配置下eclipse即可;
  2. 与Java无缝集成,上手容易,在熟悉的语法基础上极大的简化了其代码,真的是Better Java;
  3. 空指针安全。

大家闲来无事可以了解一下。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2964

    浏览量

    104689
  • 环境
    +关注

    关注

    0

    文章

    125

    浏览量

    16206
  • 代码
    +关注

    关注

    30

    文章

    4775

    浏览量

    68506
  • kotlin
    +关注

    关注

    0

    文章

    60

    浏览量

    4187
  • SpringBoot
    +关注

    关注

    0

    文章

    173

    浏览量

    175
收藏 人收藏

    评论

    相关推荐

    企业智能化转型过程中,需要注意哪些“”?

    竞争力。 同时,企业在智能化转型的过程中,也会遇到各种各样的问题,企业需要有意识去避开一些。在10月23日的2019全球智能化商业峰会上,美的、亚信科技、科沃斯针对智能化转型过程中
    的头像 发表于 10-31 14:36 5457次阅读

    IAP功能实现过程遇到

    花了四天时间才把IAP功能做好。其中也遇到许多的,这次把这次IAP功能实现过程遇到把它分享出来。一开始做iap的时候也是先从网上看别人
    发表于 08-05 07:51

    IAP功能实现过程中遇到

    IAP功能实现过程中遇到过哪些?怎样去解决呢?
    发表于 10-25 09:11

    在嵌入式linux开发过程中遇到

    目标  博文旨在总结自己在嵌入式linux开发过程中遇到⛈、一些小知识点的汇总。☔等哪天发展到远离代码了,还能回一下当年的英姿。
    发表于 11-05 09:06

    记录STM32调试过程中遇到的一些

    记录STM32调试过程中遇到的一些假装这是一个目录?零、 CubeMX1.发现新大陆一、串口与DMA1.配置与使用2.串口中断与DMA3.串口中断异常二、PWM三、FDCAN1.CAN波特率
    发表于 12-06 06:40

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

    对于我们大多数搞偏硬件的,一般都是用C的,对于C++,JAVA有天生的熟悉感,稍微学习一下,在官方的基础上搞个东西难度不大,但是现在这个Kotlin是个什么鬼?语法规则完全不同了,连分号都不
    发表于 09-21 07:31

    分析KotlinJava EE的关系

    java老标准设置的所有障碍。在此过程中,新时代语言Kotlin特定的构造,使的代码更简洁而安全。 如果您没有阅读本系列的前两部分,可以在这里找到: Kotlin
    发表于 09-28 17:12 0次下载
    分析<b class='flag-5'>Kotlin</b>和<b class='flag-5'>Java</b> EE的关系

    java开发遇到的难点有哪些_java开发常见的问题及解决办法

    本文主要介绍的是java开发,首先介绍了java开发的过程,其次介绍了java开发遇到的难点,
    发表于 04-26 16:49 9.4w次阅读

    Vulkan图形处理过程中遇到的问题

    在本篇文章,我们将提到Vulkan 图形处理过程中夹杂计算任务时遇到的各式问题。为更准确地了解我们的话题,可查看文章第一部分。
    的头像 发表于 09-04 11:45 2430次阅读

    PCB在设计过程中需要注意的哪些

     PCB设计是一项非常精细的工作,在设计过程中有很多的细节需要大家注意,否则,一不小心就会掉“”里。
    的头像 发表于 03-23 11:52 2236次阅读

    PCB板在设计和生产的过程中遇到的各类问题

    PCB板在设计和生产的过程中总会遇到各种各样的问题,比如PCB板上出现暗色及粒状的接点、板子弯曲等。
    发表于 04-04 08:53 2785次阅读

    使用Kotlin替代Java重构AOSP应用

    两年前,Android 开源项目 (AOSP) 应用团队开始使用 Kotlin 替代 Java 重构 AOSP 应用。之所以重构主要有两个原因: 一是确保 AOSP 应用能够遵循 Android
    的头像 发表于 09-16 09:26 1853次阅读
    使用<b class='flag-5'>Kotlin</b>替代<b class='flag-5'>Java</b>重构AOSP应用

    【保持更新】记录单片机调试过程中遇到

    记录STM32调试过程中遇到的一些假装这是一个目录?零、 CubeMX1.发现新大陆一、串口与DMA1.配置与使用2.串口中断与DMA3.串口中断异常二、PWM三、FDCAN1.CAN波特率
    发表于 11-23 18:21 7次下载
    【保持更新】记录单片机调试<b class='flag-5'>过程中</b><b class='flag-5'>遇到</b>的<b class='flag-5'>坑</b>

    将其Android应用的Java代码迁移到Kotlin

    J2K,即 IntelliJ/Android Studio JavaKotlin 转换器。但 J2K 不是万能的,迁移的有些情况仍然很复杂。
    的头像 发表于 10-28 15:15 724次阅读

    如何用Rust通过JNI和Java进行交互

    近期工作中有Rust和Java互相调用需求,这篇文章主要介绍如何用Rust通过JNI和Java进行交互,还有记录一下开发过程中遇到的一些
    的头像 发表于 10-17 11:41 774次阅读