快速上手 Kotlin 开发系列之反引号

Posted 张鹿鹿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速上手 Kotlin 开发系列之反引号相关的知识,希望对你有一定的参考价值。

本节详细介绍 Kotlin 中的反引号。

首先需要明确反引号是哪个,反引号:键盘左上角与波浪线在一起的符号。

在 Kotlin 中反引号有两个特性:

  1. 可以解决关键字冲突的问题
  2. 可以强行将一个不合法的字符变为合法

其中第 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 开发系列之反引号的主要内容,如果未能解决你的问题,请参考以下文章

快速上手 Kotlin 开发系列之集合操作符

快速上手 Kotlin 开发系列之比较对象

快速上手 Kotlin 开发系列之作用域函数

快速上手 Kotlin 开发系列之类型映射

快速上手 Kotlin 开发系列之集合操作符

快速上手 Kotlin 开发系列之解构