91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>數(shù)值算法/人工智能>

分析Kotlin和Java EE的關(guān)系

大小:0.6 MB 人氣: 2017-09-28 需要積分:1

  本文分析了Kotlin和Java EE的關(guān)系,討論了如何利用Kotlin的運(yùn)算符,可空性和可選項(xiàng)來(lái)優(yōu)化轉(zhuǎn)換的效果。

  將Java EE應(yīng)用程序轉(zhuǎn)換為Kotlin開(kāi)始于框架的戰(zhàn)斗,我們成功地超越了java老標(biāo)準(zhǔn)設(shè)置的所有障礙。在此過(guò)程中,新時(shí)代語(yǔ)言Kotlin特定的構(gòu)造,使的代碼更簡(jiǎn)潔而安全。

  如果您沒(méi)有閱讀本系列的前兩部分,可以在這里找到:

  Kotlin和Java EE:第一部分 - 從Java到Kotlin(https://dzone.com/articles/kotlin-jee-part-one-from-java-to-kotlin)

  Kotlin和Java EE:第二部分 - 插件的樂(lè)趣(https://dzone.com/articles/kotlin-and-java-ee-part-2-having-fun-with-plugins)

  經(jīng)過(guò)對(duì)前面兩部分的回顧及修改,這里補(bǔ)充最后一些內(nèi)容。

  已有的轉(zhuǎn)換

  前兩部分中的許多結(jié)構(gòu)已經(jīng)適用與Kotlin了。 下面我們來(lái)看看Set的定義:

  由于Java不支持對(duì)象列表中的Set和其他集合的簡(jiǎn)單構(gòu)造,我們必須使用Arrays類來(lái)創(chuàng)建List,然后將其轉(zhuǎn)換為Set。Kotlin里就變成:

  我們還將Java Bean轉(zhuǎn)換為Kotlin數(shù)據(jù)類,使得它們簡(jiǎn)潔了很多。去掉所有的getter和setter,并自動(dòng)得到了equals(),hashCode()和toString()。

  分析Kotlin和Java EE的關(guān)系

  這里要感謝編譯器插件,可以偽造不變的對(duì)象,而不需要無(wú)參數(shù)的構(gòu)造函數(shù):

  用lateinit關(guān)鍵字處理那些由框架初始化的值更容易一些,可以避免不必要的空值檢查:

  分析Kotlin和Java EE的關(guān)系

  讓我們看看還有什么可以改進(jìn)的。

  空值還是可選項(xiàng)?

  這是一個(gè)非常棘手的問(wèn)題。 Kotlin對(duì)可空值有很好的支持,當(dāng)您使用第三方庫(kù)時(shí),這很有幫助。問(wèn)題是當(dāng)您有機(jī)會(huì)選擇一個(gè)時(shí),該使用什么?這是我們?cè)瓉?lái)的Optional生產(chǎn)者和消費(fèi)者對(duì):

  分析Kotlin和Java EE的關(guān)系

  Kotlin解決方案將使用空值,所以變成:

  分析Kotlin和Java EE的關(guān)系

  空值可以出現(xiàn)在調(diào)用鏈的每個(gè)步驟中,因此您必須對(duì)所有調(diào)用使用問(wèn)號(hào)。這解決了可空性問(wèn)題,但它不漂亮。

  然而,如果返回類型為Optional,結(jié)果為Optional.empty,則將略過(guò)該對(duì)象的所有未來(lái)單調(diào)調(diào)用,結(jié)果將為Optional.empty。對(duì)我來(lái)說(shuō),這看起來(lái)是一個(gè)更干凈的解決方案,如果您打算從Java調(diào)用Kotlin代碼,它也是一個(gè)更安全的解決方案。對(duì)于Java互操作,優(yōu)先于空值。

  運(yùn)算符!

  find, add , 和 delete是完全合法的方法名稱,但是不是使用運(yùn)算符更好呢?

  MethodOperator

  service.find(id)service[id]

  service.add(kittenEntity)service += kittenEntity

  我發(fā)現(xiàn)它不只是更短,而且更可讀,因?yàn)榇a不再是一大堆方法調(diào)用。小心只使用知名和易理解的操作符,否則,您將會(huì)遇到像Scala庫(kù)一樣大的混亂,然后您將需要一個(gè)操作符周期表。在數(shù)據(jù)存儲(chǔ)庫(kù)的情況下,類似MutableMap的接口工作得很好。請(qǐng)注意,我使用“plus assign”(+ =)運(yùn)算符來(lái)持久化一個(gè)實(shí)體,因?yàn)樵技习呀?jīng)擁有的內(nèi)容以及一個(gè)附加項(xiàng)。

  以下是如何聲明它們:

  分析Kotlin和Java EE的關(guān)系

  您可能希望保留原始方法,并對(duì)操作符進(jìn)行包裝,因?yàn)樵挤椒梢杂蟹祷刂担承┎僮鞣麆t不能返回值。其他類似的選項(xiàng)是是“remove”和“contains”方法,因?yàn)樗鼈兛梢杂谩癿inus assign”( - =)和Kotlin的in運(yùn)算符表示。其余的就留給你去探索。

  結(jié)論

  以慣用的方式寫Kotlin代碼的目的是要有更好的可讀性和更安全的代碼,我希望所提出的例子成功地實(shí)現(xiàn)了這一意圖。該系列僅顯示了幾種方法來(lái)改進(jìn)Java代碼,同時(shí)使某些部分保持不變。值得探索的特點(diǎn)是:擴(kuò)展函數(shù),如果可能的話何時(shí)擴(kuò)展,try/catch作為函數(shù)。探索一下,找出什么適合你的,玩得開(kāi)心!

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?
      主站蜘蛛池模板: 中国一级特黄特色真人毛片 | 四虎东方va私人影库在线观看 | 免费h网站在线观看 | 欧美一级做一a做片性视频 欧美一级做一级做片性十三 | 未成人禁止视频高清在线观看 | 天天操夜夜操夜夜操 | 五月六月伊人狠狠丁香网 | 日本在线观看成人小视频 | 香蕉视频在线免费播放 | 欧美成人精品福利网站 | 欧美最猛黑人xxxx黑人猛交黄 | 4438x全国免费| va在线| 天天怕夜夜怕狠狠怕 | 天天做天天爱夜夜大爽完整 | 色综合免费视频 | 色综合亚洲天天综合网站 | 日本福利小视频 | 天天干天天插天天射 | 色欧美色图 | 濑亚美莉vs黑人欧美视频 | 亚洲一一在线 | 一级欧美一级日韩 | 美女国产在线观看免费观看 | 国模极品一区二区三区 | 宅男69免费永久网站 | 黄色大片网站 | 免费看一级特黄a大片 | 亚洲jizzjizz | 又大又粗进出白浆直流动态图 | 好吊色青青青国产在线观看 | 亚洲精品一区二区中文 | xxx日本69hd | 2021国产精品成人免费视频 | 日本三级香港三级人妇 m | 国产成年女一区二区三区 | 亚洲午夜精品久久久久久人妖 | 视频在线观看免费网址 | 国产成人精品曰本亚洲78 | 美女午夜影院 | 久久精品高清视频 |