反引号(键盘左上角和波浪线在一起的符号) ``
在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进行兼容了。
如果觉得我的文章能够帮助到你,也欢迎关注我的微信公众号「晨雨细曲」,有新技术和知识会推送在这上面。