1. 程式人生 > >快速學習Kotlin(九)Kotlin中的特殊符號

快速學習Kotlin(九)Kotlin中的特殊符號

反引號(鍵盤左上角和波浪線在一起的符號) ``

在Kotlin中可以用反引號解決關鍵字衝突的問題,可以強行將一個不合法的字元變為合法。

fun `123`(){
    println("this is message")
}

fun main(args: Array<String>) {
    `123`();
}

例如,我們在命名一個函式名稱的時候其實是不能用數字開頭的,必須以字母或者下劃線開頭然後後面再跟數字才行。但是如果非要用數字開頭,這時候就必須使用反引號來引用起數字,之後便可以使用了。

當然一般情況下我們也不允許函式這麼被命名,那麼這時候我們在那些情況下會用到這種方式呢?

我們知道在Kotlin中有一個關鍵字internal,被這個關鍵字修飾的函式可以被同一個module中任何方法呼叫。但是在Java又沒有這個修飾符,而且Java和Kotlin是100%相容的,那麼這個時候Java在呼叫這個函式的時候會把他當成public來處理,這顯然不是我們想要的。那麼該如何讓一些函式不能被Java呼叫呢?這個時候就可以使用反引號來引用一些Java中沒有特殊方法來處理這個問題。

Kotlin物件的比較

我們知道在Java中“ == ”用來比較這兩個物件是否完全相同,而用equals來比較這兩個物件值是否一致。

而在Kotlin中是不需要去呼叫equals方法的。其預設“ == ”就是java中的equals方法,而“ === ”即為java中的“ == ”。

也就是說在Kotlin中“ == ”比較的是兩個物件的值是否相同,而“===”比較的是兩個物件是否相同。

型別連結 public typealias

typealias可以將B類對映到A類上,從而這個A類便具有了B類的特性。

fun main(args: Array<String>) {
    var file:File = A("");
    file.isFile;

}


public typealias A = File;

看到我們將File這個類賦值給了A這個類,於是A便有了File的一切特性。我們在main函式中可以用A去例項化產生物件file,通過A例項化的物件file可以呼叫File的一切方法。這便是typealisa的作用。

其實在Kotlin中有非常多的類都是通過typealisa去對映Java類從而得來得。比如Kotlin中的HashMap就是通過對映java中的HashMap得來的。為什麼會這麼做呢?個人認為,這麼做的話以後對kotlin中的HashMap進行優化可以直接在kotlin中處理,就不需要去對Java中的HashMap進行相容了。

如果覺得我的文章能夠幫助到你,也歡迎關注我的微信公眾號「晨雨細曲」,有新技術和知識會推送在這上面。