我为什么要将 Java 与 Kotlin 混合的项目重构为纯 Kotlin 的项目(以 Kotlin 为主)
在开始之前,请允许我先介绍一下我正在开发的 阳光沙滩APP 项目:
阳光沙滩APP(SunnyBeach):采用 MVVM 架构 + Jetpack 组件搭建项目,主要使用阳光沙滩社区开放Api实现相关功能。
这其实是来自网站的一位同学的提问。
虽说Kotlin和Java是互操作、兼容的,但其实两者之间相互调用的阻碍还是有的(在 Kotlin 中调用方法我其实并没有发现明显的阻碍,相反,还非常的丝滑)。
不知道你有没有使用过 Kotlin 中的 Result 这个类,在 Kotlin 中使用起来体验其实是很好的。但是你要是想在 Java 中使用的话就显得比较麻烦了,因为它的函数其实是 inline 关键字修饰的(它的名字叫做:内联函数),这意味着在经过编译器编译之后该函数体内的代码是直接 copy 到调用的地方的(它可以减少额外生成匿名类和执行函数的开销),但是在 Java 里其实是并没有这个概念的,那怎么办呢?
于是我想到了一个曲线救国的方法 —— 那就是在 Kotlin 的作用域中将这个类序列化(看源码可以知道,其实是实现了 Serializable 接口的),然后在 Java 中进行反序列化。
事实证明,该方案是可行的,但显然在 Java 中使用起来还是很繁琐的(可以在我的项目的 dev-java 分支里找到对应的实现)。
让我产生此次重构想法的真正原因并不是这个,这只是压垮骆驼的最后一根稻草(因为 Kotlin 的语法糖实在是太甜了)。
于是,我花了两天左右的时间将 Java 和 Kotlin 混合开发的项目重构成了纯 Kotlin 的项目(虽然其中还有为数不多的 Java 类,不过这影响已经很小了)。
接下来,让我们开始以 Kotlin 语言为主的开发旅程吧!Okey, Let's go!