Kotlin学习笔记——this关键字的限定符

一、前言

    在面向对象的开发语言中,我们经常遇到的场景就是在一个类(A)的内部类(B)中,需要引用外部类(A)的当前对象,此时,就需要为this关键字添加限定符,以确定所表示的对象。

二、场景复现

在Java中,this 关键字限定符的使用大家应该都比较熟悉,就是 “外部类类名+点运算符+this” 关键字即可,例如:A.this
示例:

class A {

    public static void main(String [] args) {
        new A().aShow();
    }

    public void aShow() {
        new B().bShow();
    }

    class B {

        public void bShow() {
            // 在这里限定外部类A的this,使用A.this
            bTest(A.this);
        }

        private void bTest(A a) {
            System.out.println(a.toString());
        }
    }
}

在Kotlin中,this 关键字的限定符跟Java的语法不一样,是通过 “this+@+外部类类名” 表示,例如:this@A

示例:

fun main(args: Array<String>) {
    A().aShow()
}

class A {

    fun aShow() {
        B().bShow()
    }

    // 在kotlin中,内部类需要inner关键字,才能使用 `this` 关键字引用外部类对象
    inner class B {
        fun bShow() {
            show(this@A)
        }

        private fun show(a: A) {
            println(a.toString())
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值