kotlin改善java代碼實(shí)例分析
序
本文主要舉幾個kotlin如何改善java代碼的例子
字符串字面值及模板
字符串字面值
@Test
fun testStringLiterals(){
val a = """if(a > 1) {
| return a
|}""".trimMargin()
println(a)
val b = """Foo
Bar""".trimIndent()
println(b)
}
有了字符串字面值,寫sql啥的就不用那么費(fèi)勁拼接字符串了
字符串模板
@Test
fun testStringTemplate() {
val name = "hello kotlin"
println("Hello, $name!");
val data = listOf(1,2,3)
println("Hello, ${data[0]}!")
}
這個字符串模板更是強(qiáng)大,相當(dāng)于內(nèi)置一個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雖然可以自動生成getter/setter,@Data注解也可以生成equal/hashcode方法,但是lombok不方便在IDE查找那些方法有調(diào)用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的三元表達(dá)式更簡潔一點(diǎn),在表達(dá)式為true的時候就不用重復(fù)寫要返回的內(nèi)容,只要寫else部分。
Null Safety在流式/鏈?zhǔn)秸{(diào)用的時候更有用
// 如果 `person` 或者 `person.department` 其中之一為空,都不會調(diào)用該函數(shù): person?.department?.head = managersPool.getManager()
小結(jié)
本文只是舉了kotlin可以改善java代碼的幾個例子,kotlin太強(qiáng)大了,目標(biāo)是要替代java。其中很多設(shè)計(jì)可以看到scala的影子,但是黑魔法也比較多,學(xué)習(xí)曲線稍微有點(diǎn)抖,不過如果不使用太高級的語法,也還OK。
相關(guān)參考:https://www.kotlincn.net/docs/reference/
相關(guān)文章
微信公眾號模板消息接口開發(fā)Java實(shí)現(xiàn)方法代碼
這篇文章主要介紹了微信公眾號模板消息接口開發(fā)Java實(shí)現(xiàn)的相關(guān)資料,,該接口可以用于向關(guān)注公眾號的用戶推送消息,包括群發(fā)和指定用戶發(fā)送消息,文章詳細(xì)介紹了如何獲取公眾號的測試信息、配置接口信息和獲取access_token,需要的朋友可以參考下2024-12-12
java批量導(dǎo)入導(dǎo)出文件的實(shí)例分享(兼容xls,xlsx)
這篇文章主要給大家介紹了利用java批量導(dǎo)入導(dǎo)出文件的相關(guān)資料,文中給出了詳細(xì)的實(shí)例代碼,并且兼容xls,xlsx,對大家具有一定的參考學(xué)習(xí)價值,下面跟著小編一起來看看詳細(xì)的介紹吧。2017-06-06
Spring Boot jar 啟動時設(shè)置環(huán)境參數(shù)的操作
這篇文章主要介紹了Spring Boot jar 啟動時設(shè)置環(huán)境參數(shù)的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
Sharding-Jdbc 自定義復(fù)合分片的實(shí)現(xiàn)(分庫分表)
本文主要介紹了Sharding-Jdbc 自定義復(fù)合分片的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-07-07
spring使用ehcache實(shí)現(xiàn)頁面緩存示例
這篇文章主要介紹了spring使用ehcache實(shí)現(xiàn)頁面緩存示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02

