本节涉及的知识点:
this表达式,inner关键字,扩展函数,标签,lambda表达式,属性的方法定义。重点理解this与inner,其他知识点后续章节详细阐述。
1、this表达式
在kotlin中,为了表示当前接收者的对象,我们可以使用this关键字(表达式):
类成员函数中:this指该类的当前对象;
在扩展函数或者带接收者的字面数中:this指在点左侧传递的接收者参数;
如果this没有限定符,默认指包含它的最内层作用域,如果需要引用其他作用域中的this,需要使用标签限定符(this@label,label是一个标签)。
运行结果:
2、inner关键字
kotlin中支持类的嵌套(内部类),不过和java中不一样(java中包含一个指向外部类的对象的引用),kotlin中所有的内部类默认为静态的,这样很好的减少了内存泄漏问题。如果需要在内部类引用外部类的对象,可以使用inner声明内部类,使内部类变为非静态的,通过this@外部类名,指向外部类。
通过以下代码更好的理解上述文字描述:
调用代码:
代码说明:
1、inner修饰的内部类可理解为java中的非静态内部类,调用方式:
外部类().内部类().方法();
2、kotlin内部类默认为静态的,理解为java中使用static修饰的内部类,调用方式:
外部类.内部类().方法();
3、如果需要在静态内部类中使用外部类,可参考java中实现方式,在内部类中定义外部类弱引用,通过构造方法传入外部类对象;
感谢浏览!