国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

kotlin改善java代碼實例分析

2024-07-21 23:03:44
字體:
來源:轉載
供稿:網友

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

字符串字面值及模板

字符串字面值

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

有了字符串字面值,寫sql啥的就不用那么費勁拼接字符串了

字符串模板

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

這個字符串模板更是強大,相當于內置一個freemarker,而且都不用手工傳遞變量值

for循環中獲取當前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循環要得到index,就得在外面聲明下index,自己統計,太別扭了

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查找那些方法有調用getter/setter;

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

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")  }

這個Null Safety太有用了,比起java的三元表達式更簡潔一點,在表達式為true的時候就不用重復寫要返回的內容,只要寫else部分。

Null Safety在流式/鏈式調用的時候更有用

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

小結

本文只是舉了kotlin可以改善java代碼的幾個例子,kotlin太強大了,目標是要替代java。其中很多設計可以看到scala的影子,但是黑魔法也比較多,學習曲線稍微有點抖,不過如果不使用太高級的語法,也還OK。

相關參考:https://www.kotlincn.net/docs/reference/


注:相關教程知識閱讀請移步到kotlin教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金阳县| 大洼县| 东莞市| 海宁市| 巴东县| 阿勒泰市| 西乌珠穆沁旗| 大竹县| 简阳市| 阿鲁科尔沁旗| 环江| 崇阳县| 晋中市| 灵石县| 乌兰浩特市| 祁东县| 江北区| 砚山县| 临夏市| 呼和浩特市| 大冶市| 于田县| 咸丰县| 左贡县| 弥勒县| 乌什县| 阿尔山市| 南投市| 凤台县| 南开区| 公主岭市| 五家渠市| 阜平县| 肥西县| 鄂托克前旗| 临海市| 青海省| 体育| 界首市| 平远县| 喀什市|