接口实现监听器
  • Student.java
package test;

public class Student {
    private String name;

    public Student(String name) {
        this.name = name;
    }

    // 设置监听器接口
    interface MyListener{
        void listen(String name);
    }

    public void fun(){
        // 如果监听器不为空,就说明已经在别的类里设置了
        if (myListener != null){
            // 4.此处调用的listen实际是在外部实现好的监听器
            myListener.listen(name);
        }
    }

    // 设置本地监听器
    private static MyListener myListener; // 2.本地监听器被初始化,不为空了

    // 1.由外部设置监听器
    public void setMyListener(MyListener listener){
        Student.myListener = listener;
    }
}
  • Test.java
package test;

public class Test {
    public static void main(String[] args) {
        Student student = new Student("haha");
        // 0.设置监听器
        student.setMyListener(new Student.MyListener() {
            // 5.给内部使用的具体实现
            @Override
            public void listen(String name) {
                System.out.println(name);
            }
        });

        // 3.执行内部的方法
        student.fun();
    }
}