快速上手 Kotlin 开发系列之反引号
Posted 张鹿鹿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速上手 Kotlin 开发系列之反引号相关的知识,希望对你有一定的参考价值。
本节详细介绍 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 中访问刚才声明的方法是不行的:
以上就是本节内容,欢迎大家关注~
以上是关于快速上手 Kotlin 开发系列之反引号的主要内容,如果未能解决你的问题,请参考以下文章