反引號(hào)(鍵盤左上角和波浪線在一起的符號(hào)) ``
在Kotlin中可以用反引號(hào)解決關(guān)鍵字沖突的問題桨仿,可以強(qiáng)行將一個(gè)不合法的字符變?yōu)楹戏ā?/p>
fun `123`(){
println("this is message")
}
fun main(args: Array<String>) {
`123`();
}
例如题涨,我們?cè)诿粋€(gè)函數(shù)名稱的時(shí)候其實(shí)是不能用數(shù)字開頭的株搔,必須以字母或者下劃線開頭然后后面再跟數(shù)字才行认烁。但是如果非要用數(shù)字開頭肿男,這時(shí)候就必須使用反引號(hào)來引用起數(shù)字,之后便可以使用了砚著。
當(dāng)然一般情況下我們也不允許函數(shù)這么被命名次伶,那么這時(shí)候我們?cè)谀切┣闆r下會(huì)用到這種方式呢?
我們知道在Kotlin中有一個(gè)關(guān)鍵字internal稽穆,被這個(gè)關(guān)鍵字修飾的函數(shù)可以被同一個(gè)module中任何方法調(diào)用冠王。但是在Java又沒有這個(gè)修飾符,而且Java和Kotlin是100%兼容的舌镶,那么這個(gè)時(shí)候Java在調(diào)用這個(gè)函數(shù)的時(shí)候會(huì)把他當(dāng)成public來處理柱彻,這顯然不是我們想要的。那么該如何讓一些函數(shù)不能被Java調(diào)用呢餐胀?這個(gè)時(shí)候就可以使用反引號(hào)來引用一些Java中沒有特殊方法來處理這個(gè)問題哟楷。
Kotlin對(duì)象的比較
我們知道在Java中“ == ”用來比較這兩個(gè)對(duì)象是否完全相同,而用equals來比較這兩個(gè)對(duì)象值是否一致否灾。
而在Kotlin中是不需要去調(diào)用equals方法的卖擅。其默認(rèn)“ == ”就是java中的equals方法,而“ === ”即為java中的“ == ”墨技。
也就是說在Kotlin中“ == ”比較的是兩個(gè)對(duì)象的值是否相同惩阶,而“===”比較的是兩個(gè)對(duì)象是否相同。
類型鏈接 public typealias
typealias可以將B類映射到A類上扣汪,從而這個(gè)A類便具有了B類的特性断楷。
fun main(args: Array<String>) {
var file:File = A("");
file.isFile;
}
public typealias A = File;
看到我們將File這個(gè)類賦值給了A這個(gè)類,于是A便有了File的一切特性崭别。我們?cè)趍ain函數(shù)中可以用A去實(shí)例化產(chǎn)生對(duì)象file冬筒,通過A實(shí)例化的對(duì)象file可以調(diào)用File的一切方法恐锣。這便是typealisa的作用。
其實(shí)在Kotlin中有非常多的類都是通過typealisa去映射Java類從而得來得舞痰。比如Kotlin中的HashMap就是通過映射java中的HashMap得來的土榴。為什么會(huì)這么做呢?個(gè)人認(rèn)為匀奏,這么做的話以后對(duì)kotlin中的HashMap進(jìn)行優(yōu)化可以直接在kotlin中處理鞭衩,就不需要去對(duì)Java中的HashMap進(jìn)行兼容了。
如果覺得我的文章能夠幫助到你娃善,也歡迎關(guān)注我的微信公眾號(hào)「晨雨細(xì)曲」论衍,有新技術(shù)和知識(shí)會(huì)推送在這上面。