kotlin改善java代碼實(shí)例分析
序
本文主要舉幾個(gè)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]}!") }
這個(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幫你解決這些問題
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á)式更簡潔一點(diǎn),在表達(dá)式為true的時(shí)候就不用重復(fù)寫要返回的內(nèi)容,只要寫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í)曲線稍微有點(diǎn)抖,不過如果不使用太高級(jí)的語法,也還OK。
相關(guān)參考:https://www.kotlincn.net/docs/reference/
相關(guān)文章
java WSDL接口webService實(shí)現(xiàn)方式
這篇文章主要為大家詳細(xì)介紹了java WSDL接口webService實(shí)現(xiàn)方式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04idea啟動(dòng)多個(gè)服務(wù)不顯示Services或者RunDashboard窗口的處理方法
這篇文章主要介紹了idea啟動(dòng)多個(gè)服務(wù)不顯示Services或者RunDashboard窗口,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03Java Web開發(fā)入門書籍實(shí)例解析(總結(jié)一)
從事Java Web開發(fā)這一段時(shí)間來,對(duì)Java 面向?qū)ο蟮乃枷牒蚆VC開發(fā)模式可以說已經(jīng)熟悉了。我當(dāng)前參與的項(xiàng)目使用的框架是Spring、SpringMVC、Hibernate。下面腳本之家小編給大家整理一篇教程幫助大家學(xué)習(xí)javaweb相關(guān)知識(shí),感興趣的朋友可以參考下2016-03-03