当前位置 : 主页 > 编程语言 > java >

《Java 核心技术 卷1》 笔记 第六章 接口和内部类(3) 接口回调与内部类

来源:互联网 收集:自由互联 发布时间:2022-07-13
6.3 接口与回调 回调:指定某个特定事件发生时,应当采取的动作。比如按下鼠标,或者点击菜单时采取的行动。(以下代码基本来自书中) public class Main { public static void main ( String [


6.3 接口与回调

回调:指定某个特定事件发生时,应当采取的动作。比如按下鼠标,或者点击菜单时采取的行动。(以下代码基本来自书中)

public class Main {
public static void main(String[] args) throws CloneNotSupportedException, InterruptedException {
Main solution = new Main();
Timer t = new Timer(10000,solution.new TimePrinter());
t.start();
JOptionPane.showMessageDialog(null,"Quit program?");
System.exit(0);
}

class TimePrinter implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {
Date d = new Date();
System.out.println("the time is"+d);
Toolkit.getDefaultToolkit().beep();
}
}
}

效果:

每10秒内关闭对话框,不会打印时间;10秒没有关闭对话框会打印时间

《Java 核心技术 卷1》 笔记 第六章 接口和内部类(3) 接口回调与内部类_linq

6.4 内部类

问:为什么需要使用内部类?

答:

  • 内部类可以访问作用域内其他数据
  • 内部类可以对其他类隐藏
  • 需要回调函数时,可以使用内部类
  • public class Main {
    public static void main(String[] args) throws CloneNotSupportedException, InterruptedException {
    Main solution = new Main();
    Timer t = new Timer(10000,solution.new TimePrinter());
    t.start();
    JOptionPane.showMessageDialog(null,"Quit program?");
    System.exit(0);
    }
    Date d = new Date();
    class TimePrinter implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e) {
    System.out.println("the time is"+d);
    Toolkit.getDefaultToolkit().beep();
    }
    }
    }

    结果与上面相同,可以看到,把变量d放到外部类中,内部类TimePrinter的方法actionPerformed的还是可以访问到

    注意,构建内部类对象的的代码:new 外部类().new 内部类(),完整声明和初始化:

    Main.TimePrinter tp = solution.new TimePrinter();

       系列内容:

    《Java 核心技术 卷1》 笔记:第一章 Java程序设计概述

    《Java 核心技术 卷1》 笔记:第二章 Java程序设计环境

    《Java 核心技术 卷1》 笔记:第三章 Java基本的程序设计结构(1)

    《Java 核心技术 卷1》 笔记:第三章 Java基本的程序设计结构(2)

    《Java 核心技术 卷1》 笔记:第三章 Java基本的程序设计结构(3)

    《Java 核心技术 卷1》 笔记:第三章 Java基本的程序设计结构(4)

    《Java 核心技术 卷1》 笔记:第三章 Java基本的程序设计结构(5)

    《Java 核心技术 卷1》 笔记:第三章 Java基本的程序设计结构(6)

    《Java 核心技术 卷1》 笔记:第三章 Java基本的程序设计结构(7)大数处理、数组、多维数组、控制台传参

    《Java 核心技术 卷1》 笔记 第四章:类与对象

    《Java 核心技术 卷1》 笔记 第四章:类与对象(2) GregorianCalendar 与 类的基本组成

    《Java 核心技术 卷1》 笔记 第四章:类与对象(3) 构造器全局私有方法

    《Java 核心技术 卷1》 笔记 第四章:类与对象(4) 静态字段+静态方法+工厂方法

    《Java 核心技术 卷1》 笔记 第四章:类与对象(5) 形参与实参 构造器的默认值与默认构造

    《Java 核心技术 卷1》 笔记 第四章:类与对象(6) 构造器调用与初始化块

    《Java 核心技术 卷1》 笔记 第四章:类与对象(7) 注释、JavaDoc与类设计

    《Java 核心技术 卷1》 笔记 第五章 继承

    《Java 核心技术 卷1》 笔记 第五章 继承(2)

    《Java 核心技术 卷1》 笔记 第五章 继承(3)

    《Java 核心技术 卷1》 笔记 第五章 继承(4)equals方法

    《Java 核心技术 卷1》 笔记 第五章 继承(5)hashCode 与 toString

    《Java 核心技术 卷1》 笔记 第五章 继承(6) 泛型

    《Java 核心技术 卷1》 笔记 第五章 继承(7) 包装类和可变数组

    《Java 核心技术 卷1》 笔记 第五章 继承(8) 枚举类与类反射

    《Java 核心技术 卷1》 笔记 第五章 继承(9) 异常捕获与反射运用

    《Java 核心技术 卷1》 笔记 第五章 继承(10)反射

    《Java 核心技术 卷1》 笔记 第五章 继承(11)反射泛型数组+方法指针+类设计技巧

    《Java 核心技术 卷1》 笔记 第六章 接口和内部类

    《Java 核心技术 卷1》 笔记 第六章 接口和内部类(2)  

     

    网友评论