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

最近了解了下 kotlin ,其中的很多语法糖很有意思,并且可以与 java 无缝兼容。故尝试在一个 springboot 工程上将部分类修改为 kotlin ,下面记录了由 java 改为 kotlin 过程中遇到的坑和 kotlin 的优缺点。
环境和版本eclipse oxygenjdk 8kotlin 1.3.0gradle 4.6springcloud greenwich.m1springboot 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代码
刷新gradleeclipse设置: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@autowiredprivate appservice appservice;//kotlin@autowiredlateinit var appservice: appservice方法函数//java @requestmapping(/slider) public list slider(){ return appservice.gethomesliders(); } //kotlin @requestmapping(/slider) fun slider() = appservice.gethomesliders()其他kotlin中默认对象不能为null,? 表示当前对象可以为null!! 表示当前对象不为null的情况下执行单表达式函数:当函数返回单个表达式时,可以省略花括号并且在 = 符号之后指定代码体即可隐式返回类型:当返回值类型可由编译器推断时,显式声明返回类型可省略小结初步尝试使用了kotlin,总体上还是十分欣喜的,原因如下:
配置及使用方便,只需引用几个gradle插件和jar包,然后简单地配置下eclipse即可;与java无缝集成,上手容易,在熟悉的语法基础上极大的简化了其代码,真的是better java;空指针安全。大家闲来无事可以了解一下。

促进现代服务业转型将取决于物联网?
换体DMA高速数据采集电路原理及其CPLD实现
如何破解AI超微光摄像机高速公路补光灯光污染难题
IBM V7000存储数据恢复案例
富士康:美国首家工厂将生产平板屏幕,并不是iPhone
由Java改为 Kotlin过程中遇到的坑
瑞萨面向电机控制应用推出性能卓越的RA8 MCU
华为新专利后置圆形摄像模组位置改变
Raspberry Pi、Orange Pi……什么是开发板?开发板有什么用?
真正的下一代无线网络 5G应该怎样?
英特尔Core i7-6950X评测:10核20线程的怪兽
LED驱动电路专用电解电容器详解
LoRa模块LoRa1262与LoRa1262F30的区别
机器人的广泛应用将会给社会带来更多的好处
ADI推出单芯片电能计量AFE(模拟前端)ADE7816
boost升压电路中的二极管作用
新唐科技Nano120 USB 系列简介
会“晒太阳发电”的雄安站 京雄城际铁路预计年底开通
中科曙光入榜2021中国品牌500强
LED台灯拆解评测:百元售价 十元成本