Kotlin学习手册(四)内部类

如需转载请评论或简信,并注明出处,未经允许不得转载

Kotlin系列导读

Kotlin学习手册(一)类与继承
Kotlin学习手册(二)属性与字段
Kotlin学习手册(三)接口
Kotlin学习手册(四)内部类
Kotlin学习手册(五)函数
Kotlin学习手册(六)数组与集合
Kotlin学习手册(七)for循环
Kotlin学习手册(八)内联函数let、with、run、apply、also
Kotlin学习手册(九)空类型安全
Kotlin学习手册(十)带你真正理解什么是Kotlin协程

目录

内部类

.java

public class OutClass {
    int a = 1;
    public class InClass {
        public void foo() {
            OutClass.this.a = 2;
        }
    }

.kotlin

class OutClass {
    var a = 1
    inner class InClass {
        fun foo() {
            [email protected] = 2
        }
    }
}

kotlin中的内部类默认就是静态的,不会持有外部类引用

匿名内部类

接口中只有一个方法

.java

view.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        //do something
    }
});

.kotlin

view.setOnClickListener {
    //do something
}

var listenr = View.OnClickListener{
    //do something
}
view.setOnClickListener(listenr)

接口中有多个方法

.java

valueAnimator.addListener(new Animator.AnimatorListener() {
    @Override
    public void onAnimationStart(Animator animator) {

    }

    @Override
    public void onAnimationEnd(Animator animator) {

    }java

    @Override
    public void onAnimationCancel(Animator animator) {

    }

    @Override
    public void onAnimationRepeat(Animator animator) {

    }
});

.kotlin

valueAnimator.addListener(object : Animator.AnimatorListener {
    override fun onAnimationStart(animator: Animator) {

    }

    override fun onAnimationEnd(animator: Animator) {

    }

    override fun onAnimationCancel(animator: Animator) {

    }

    override fun onAnimationRepeat(animator: Animator) {

    }
})

你可能感兴趣的:(Kotlin学习手册(四)内部类)