Kotlin安卓实战之java混合开发

简述

在项目实战中,渐渐的遇到了很多问题,主要出现在java中调用kotlin封装的高级函数,以及委托属性等。本来是想把以前的经验积累全部转到kotlin上,再加一些改进就准备当基础工程依赖使用。可没想到在老的项目中,也就是在java中调用kotlin的封装,简直就是给自己找刺激,完全不符合编码规范,更加不符合封装原则。现在已经怀疑官方所说的支持混合开发,看来也只是支持,并非是上策。下面举两个例子

BaseAdapter - kotlin源码

BaseAdapter

很喜欢这种风格是吧,很简单,先看看在kotlin中的调用方式,咱们比对一下

kotlin调用,看代码很简介是吧,可以使用lambda表达式

kotlin调用

java调用,什么鬼,什么┏┛墓┗┓...(((m -__-)m, 看了Function2源码 其实就是个接口,相当与你在adapter中写了个接口回掉。Unit 是kotlin中的对象,相当于java的void,这样用很不符合命名规范,

java中调用

SharedPreferences - kotlin源码

Preference

这个例子也很 典型,学几天的人应该都遇到了,而且会被它的调用方法所吸引,当时的心情就是怎么可以这样简单,如下在kotlin中调用方式,真是爽翻了。

kotlin中调用

可你想过在java中使用吗?你确定能用吗这个封装。来实验下

java中调用

似乎只有 getPrefs方法能用,再看看具体存一个的调用

java调用

你敢这么用吗?一个工作了四五年的程序员,你敢这么写吗?哈哈,这封装完全就不能使用。也许改造下会好一点,但还是不能胜任。

总结

结论很简单,你要是在java中使用 在kotlin中所谓的高级特性是不可能了,能混合开发 我都不会混合开发,要么完全使用kotlin,去调java,绝对不用java 去调kotlin。越来越多的公司尝试kotlin,还是多多实战下吧,选个折中的方式,可以在相对独立的模块中使用新的语言开发。本次就到这,去写接口文档了-  -