欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

kotlin改善java代碼實(shí)例分析

 更新時(shí)間:2018年03月29日 14:48:34   作者:codecraft  
我們給大家整理了關(guān)于kotlin改善java代碼的相關(guān)實(shí)例以及操作的詳細(xì)方法,有需要的讀者們參考下。


本文主要舉幾個(gè)kotlin如何改善java代碼的例子

字符串字面值及模板

字符串字面值

  @Test
  fun testStringLiterals(){
    val a = """if(a > 1) {
     |  return a
     |}""".trimMargin()
    println(a)

    val b = """Foo
        Bar""".trimIndent()
    println(b)
  }

有了字符串字面值,寫(xiě)sql啥的就不用那么費(fèi)勁拼接字符串了

字符串模板

 @Test
  fun testStringTemplate() {
    val name = "hello kotlin"
    println("Hello, $name!");
    val data = listOf(1,2,3)
    println("Hello, ${data[0]}!")
  }

這個(gè)字符串模板更是強(qiáng)大,相當(dāng)于內(nèi)置一個(gè)freemarker,而且都不用手工傳遞變量值

for循環(huán)中獲取當(dāng)前index

@Test
  fun testForEachIndex(){
    val items = listOf("apple", "banana", "kiwifruit")
    for (index in items.indices) {
      println("item at $index is ${items[index]}")
    }
  }

在java里頭for each循環(huán)要得到index,就得在外面聲明下index,自己統(tǒng)計(jì),太別扭了

data class

 //生成getter/setter,equals,hashcode,toString,copy等
  //setter是var變量才有
  data class Customer(val name: String, val email: String)

  @Test
  fun testDataClass(){
    val customer = Customer("admin","admin@admin.com")
    println(customer)
  }

java總是要聲明getter/setter,好處是可以在IDE查找那些方法有調(diào)用getter/setter;

lombok雖然可以自動(dòng)生成getter/setter,@Data注解也可以生成equal/hashcode方法,但是lombok不方便在IDE查找那些方法有調(diào)用getter/setter;kotlin的data class幫你解決這些問(wèn)題

Null Safety

 @Test
  fun testIfNotNull(){
    val files = File("Test").listFiles()
    println(files?.size) //null
  }

  @Test
  fun testIfNotNullAndElse(){
    val files = File("Test").listFiles()
    println(files?.size ?: "empty")
  }

這個(gè)Null Safety太有用了,比起java的三元表達(dá)式更簡(jiǎn)潔一點(diǎn),在表達(dá)式為true的時(shí)候就不用重復(fù)寫(xiě)要返回的內(nèi)容,只要寫(xiě)else部分。

Null Safety在流式/鏈?zhǔn)秸{(diào)用的時(shí)候更有用

// 如果 `person` 或者 `person.department` 其中之一為空,都不會(huì)調(diào)用該函數(shù):
person?.department?.head = managersPool.getManager()

小結(jié)

本文只是舉了kotlin可以改善java代碼的幾個(gè)例子,kotlin太強(qiáng)大了,目標(biāo)是要替代java。其中很多設(shè)計(jì)可以看到scala的影子,但是黑魔法也比較多,學(xué)習(xí)曲線(xiàn)稍微有點(diǎn)抖,不過(guò)如果不使用太高級(jí)的語(yǔ)法,也還OK。

相關(guān)參考:https://www.kotlincn.net/docs/reference/

相關(guān)文章

  • java WSDL接口webService實(shí)現(xiàn)方式

    java WSDL接口webService實(shí)現(xiàn)方式

    這篇文章主要為大家詳細(xì)介紹了java WSDL接口webService實(shí)現(xiàn)方式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Java基礎(chǔ)之多線(xiàn)程

    Java基礎(chǔ)之多線(xiàn)程

    以下是我們Java基礎(chǔ)多線(xiàn)程的一些知識(shí)點(diǎn)總結(jié),看完以后會(huì)覺(jué)得多線(xiàn)程也可以這么簡(jiǎn)單,小編精心推薦,希望能對(duì)大家有所幫助
    2018-09-09
  • Java Spring集成MapStruct詳情

    Java Spring集成MapStruct詳情

    這篇文章主要介紹了Java Spring集成MapStruct詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • J2ME編程中的幾個(gè)重要概念介紹

    J2ME編程中的幾個(gè)重要概念介紹

    本文介紹的是J2ME編程應(yīng)用平臺(tái)中的幾個(gè)重要概念,希望對(duì)你有幫助,一起來(lái)看。
    2015-09-09
  • idea啟動(dòng)多個(gè)服務(wù)不顯示Services或者RunDashboard窗口的處理方法

    idea啟動(dòng)多個(gè)服務(wù)不顯示Services或者RunDashboard窗口的處理方法

    這篇文章主要介紹了idea啟動(dòng)多個(gè)服務(wù)不顯示Services或者RunDashboard窗口,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Eclipse查看開(kāi)發(fā)包jar里源代碼的方法

    Eclipse查看開(kāi)發(fā)包jar里源代碼的方法

    這篇文章主要介紹了Eclipse查看開(kāi)發(fā)包jar里源代碼的方法的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Spring在代碼中獲取bean的幾種方式詳解

    Spring在代碼中獲取bean的幾種方式詳解

    這篇文章主要介紹了Spring在代碼中獲取bean的幾種方式詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Java Web開(kāi)發(fā)入門(mén)書(shū)籍實(shí)例解析(總結(jié)一)

    Java Web開(kāi)發(fā)入門(mén)書(shū)籍實(shí)例解析(總結(jié)一)

    從事Java Web開(kāi)發(fā)這一段時(shí)間來(lái),對(duì)Java 面向?qū)ο蟮乃枷牒蚆VC開(kāi)發(fā)模式可以說(shuō)已經(jīng)熟悉了。我當(dāng)前參與的項(xiàng)目使用的框架是Spring、SpringMVC、Hibernate。下面腳本之家小編給大家整理一篇教程幫助大家學(xué)習(xí)javaweb相關(guān)知識(shí),感興趣的朋友可以參考下
    2016-03-03
  • SpringCloud安裝Nacos完成配置中心

    SpringCloud安裝Nacos完成配置中心

    如果不滿(mǎn)足上篇文章的eureka注冊(cè)中心,那么本文記錄的Nacos是不二之選。本文主要記錄Springboot基于Nacos實(shí)現(xiàn)配置中心
    2022-07-07
  • 淺談java Properties類(lèi)的使用基礎(chǔ)

    淺談java Properties類(lèi)的使用基礎(chǔ)

    下面小編就為大家分享一篇淺談java Properties類(lèi)的使用基礎(chǔ),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01

最新評(píng)論