簡述
在項目實戰(zhàn)中,漸漸的遇到了很多問題,主要出現(xiàn)在java中調(diào)用kotlin封裝的高級函數(shù),以及委托屬性等。本來是想把以前的經(jīng)驗積累全部轉(zhuǎn)到kotlin上,再加一些改進就準備當基礎(chǔ)工程依賴使用。可沒想到在老的項目中,也就是在java中調(diào)用kotlin的封裝,簡直就是給自己找刺激,完全不符合編碼規(guī)范,更加不符合封裝原則。現(xiàn)在已經(jīng)懷疑官方所說的支持混合開發(fā),看來也只是支持,并非是上策。下面舉兩個例子
BaseAdapter - kotlin源碼
很喜歡這種風格是吧,很簡單,先看看在kotlin中的調(diào)用方式,咱們比對一下
kotlin調(diào)用,看代碼很簡介是吧,可以使用lambda表達式
java調(diào)用,什么鬼,什么┏┛墓┗┓...(((m -__-)m, 看了Function2源碼 其實就是個接口,相當與你在adapter中寫了個接口回掉。Unit 是kotlin中的對象,相當于java的void,這樣用很不符合命名規(guī)范,
SharedPreferences - kotlin源碼
這個例子也很 典型,學幾天的人應(yīng)該都遇到了,而且會被它的調(diào)用方法所吸引,當時的心情就是怎么可以這樣簡單,如下在kotlin中調(diào)用方式,真是爽翻了。
可你想過在java中使用嗎?你確定能用嗎這個封裝。來實驗下
似乎只有 getPrefs方法能用,再看看具體存一個的調(diào)用
你敢這么用嗎?一個工作了四五年的程序員,你敢這么寫嗎?哈哈,這封裝完全就不能使用。也許改造下會好一點,但還是不能勝任。
總結(jié)
結(jié)論很簡單,你要是在java中使用 在kotlin中所謂的高級特性是不可能了,能混合開發(fā) 我都不會混合開發(fā),要么完全使用kotlin,去調(diào)java,絕對不用java 去調(diào)kotlin。越來越多的公司嘗試kotlin,還是多多實戰(zhàn)下吧,選個折中的方式,可以在相對獨立的模塊中使用新的語言開發(fā)。本次就到這,去寫接口文檔了- ?-