本節詳細介紹 Kotlin 中的反引號。
首先需要明確反引號是哪個,反引號:鍵盤左上角與波浪線在一起的符號。
在 Kotlin 中反引號有兩個特性:
- 可以解決關鍵字衝突的問題
- 可以強行將一個不合法的字符變爲合法
其中第 1 個特性在前面的文章【快速上手 Kotlin 開發系列之與 Java 互調 (1)】中已經提到過,不再贅述。
今天着重介紹它的第 2 個特性,將不合法的字符強行變爲合法。
強制字符合法化
例如,我們在命名一個函數名時,我們是不能使用純數字或者空格來命名:
但是我們可以通過反引號包裹來實現命名,下面三個函數第一個用數字命名,第二三個分別是用一個和兩個空格來命名,它們都是不同的函數,並且調用都是沒有問題的:
fun `1234`() {
println(1234)
}
fun ` `() {
println("空格1")
}
fun ` `() {
println("空格2")
}
fun main() {
`1234`()
` `()
` `()
}
應用場景
反引號強制字符合法化有什麼應用場景呢?
其實這個特性我們一般不會使用它,除非是有些特殊的場景。
通過之前的文章我們知道,Kotlin 有個特有的訪問修飾符 internal,它允許當前模塊的類只能在當前模塊使用而不能被其他模塊訪問,但是 Kotlin 與 Java 是完全兼容的,所以 Kotlin 支持了這種特性的話 Java 也必須要支持,可是 Java 是沒有 internal 這樣的關鍵字的,所以當 Kotlin 聲明爲 internal 時 Java 會把它聲明成 public,這樣的話在 Java 中跨模塊是能夠直接訪問到的。
所以在這種場景下,如果你確定你的類是不希望被 Java 訪問到的話,就可以在類名上做一些特殊不合法的字符,這樣的話就可以只在 Kotlin 中訪問而不能被 Java 訪問。
例如,在 Java 中訪問剛纔聲明的方法是不行的:
以上就是本節內容,歡迎大家關注~