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

描述

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

kotlin

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

kotlin

  1. 切换为Kotlin透视图

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. 空指针安全。

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

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分