为了账号安全,请及时绑定邮箱和手机立即绑定

Kotlin学习:运算符重载

标签:
Android Kotlin

Kotlin的运算符都是靠特定名称的方法支撑的,因此只要重载这些名称的方法,我们就可以为任意类添加这些运算符。
重载运算符的方法需要用operator修饰符进行标记。
1、重载单目前缀运算符
单目前缀运算符有"+","-","!"
单目前缀运算符及对应的方法

fun main(args: Array<String>) {
    val data: Data = Data(3, 4)
    //输出:+data : x = 4, y = 5
    println("+data : ${+data}")
    //输出:-data : x = 2, y = 3
    println("-data : ${-data}")
    //输出:!data : x = -3, y = -4
    println("!data : ${!data}")
}

class Data(val x: Int, val y: Int) {
    operator fun unaryPlus(): Data {
        return Data(x + 1, y + 1)
    }

    operator fun unaryMinus(): Data {
        return Data(x - 1, y - 1)
    }

    operator fun not(): Data {
        return Data(-x, -y)
    }

    override fun toString(): String {
        return "x = ${x}, y = ${y}"
    }
}

2、自加和自减运算符
自加:++,自减:–
自加和自减运算符及对应的方法

fun main(args: Array<String>) {
    var data: Data = Data(3, 4)
    //输出:+data : x = 4, y = 5
    println("data++ : ${data++}")
    //输出:-data : x = 2, y = 3
    println("data-- : ${data--}")
}

class Data(var x: Int, var y: Int) {
    operator fun inc(): Data {
        return Data(x++, y++)
    }

    operator fun dec(): Data {
        return Data(x--, y--)
    }

    override fun toString(): String {
        return "x = ${x}, y = ${y}"
    }
}

3、双目算术运算符
双目算术运算符及对应的方法
例子同以上,重载其对应方法即可
4、in和!in运算符
in和!in运算符及其对应的方法
例子同以上,重载其对应方法即可
5、索引访问运算符
索引访问运算符及对应的方法

fun main(args: Array<String>) {
    var str = "fkjava.org"
    //根据get方法来获取指定索引处的字符,输j
    println(str.get(2))
    //使用索引访问运算符来获取指定索引处的字符,输出j
    println(str[2])
    var list = ArrayList<String>()
    list.add("Java")
    list.add("Kotlin")
    list.add("Go")
    //使用索引访问运算符来获取指定索引处的字符,输出Kotlin
    println(list[1])
    list[2] = "Swift"
    //使用索引访问运算符来修改指定索引处的字符,输出[Java,Kotlin,Swift]
    println(list)
}

6、调用运算符
调用运算符及对应的方法

fun main(args: Array<String>) {
    val str = "java.lang.String"
    val mtd = Class.forName(str).getMethod("length")
    //使用传统方法,使用Method对象的invoke方法,输出4
    println(mtd.invoke("Java"))
    //使用调用运算符,输出4
    println(mtd("Java"))
}
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
7
获赞与收藏
31

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消