Java----匿名内部类与适配器模式
来源:互联网 发布:电脑修复软件 编辑:程序博客网 时间:2024/06/07 19:41
匿名内部类是定义在方法体或块语句中的内部类,这种内部类没有类名。匿名内部类主要用在当需要定义一个新的类,而这个类又只被使用一次的场景。由于匿名内部类没有自己的类名,所以类的定义及其对象的创建(实例化)是同步完成的。
匿名内部类通过扩展某个类或实现某个接口(只能选一种,不能同时发生)来定义,其一般格式为:
new 超类名或接口名(参数列表){
类定义
}
说明:
(1)根据格式可知,匿名内部类一定是在new后面,要么继承一个类,要么实现一个接口,没有类名。
(2)匿名内部类是唯一一个没有构造方法的类。系统会自动调用超类的构造方法。
匿名内部类将实现类,重写方法和创建对象一步合成,从而简化编程的代码量。
适配器模式:预实现,先做一个抽象类,将接口中那些不常用的方法先实现了(空实现),传参的时候传适配器就可以。适用于需要添加的匿名内部类很多。
举例:鼠标有许多按钮,每个按钮产生不同的点击事件。事件通过鼠标监听器监听。
public class AdaptDemo { public static void main(String[] args){ Button b = new Button(); //匿名内部类对象,如果不用适配器,则需要重写接口中的所有方法 b.setListener(new MouseAdapter(){//传入的是适配器,因为它实现了接口 public void onclick(){ //重写方法 System.out.println("单击了一下"); } }); b.click(); b.dbclick(); //方法链编程 new Button().setListener(new MouseAdapter(){ public void onclick(){ System.out.println("单击了匿名Button"); } public void onDbclick(){ System.out.println("双击了匿名Button"); } }).click().dbclick(); }}class Button{ private MouseListener listener; public Button setListener(MouseListener listener){ this.listener=listener; return this; } public Button click(){ listener.onclick(); return this; } public void dbclick(){ listener.onDbclick(); }}interface MouseListener{ //鼠标监听器 public void onclick(); public void onDbclick(); public void onRightclick(); public void onMiddleclick();}//适配器,实现接口中的方法,一般是不常用的方法,也可以全部实现,可以空实现,也可以具体实现abstract class MouseAdapter implements MouseListener{ public void onclick(){ System.out.println("单击"); } public void onDbclick(){} public void onRightclick(){} public void onMiddleclick(){}}
运行结果: 单击了一下 单击了匿名Button 双击了匿名Button
阅读全文
0 0
- Java----匿名内部类与适配器模式
- 匿名对象、匿名内部类、适配器模式
- Java内部类与匿名内部类
- JAVA内部类 与 匿名内部类
- Java 内部类与匿名内部类
- Java 内部类与匿名内部类
- Java内部类与匿名内部类
- Java -> 内部类与匿名内部类
- 适配器设计模式和匿名内部类的应用
- Java 匿名内部类 工厂模式
- java的内部类与匿名内部类
- java的内部类与匿名内部类
- java内部类与匿名内部类作用是什么?
- Java内部类与匿名内部类的区别
- Java内部类与匿名类
- java的内部类与匿名类
- 【Java】定时器、线程与匿名内部类
- Java- 内部类与匿名类
- 实习第一天:mybites的学习笔记(纯手打)
- linux touch
- 离散
- The content of the adapter has changed but ListView did not receive a notification
- 文件描述符fd与FILE
- Java----匿名内部类与适配器模式
- 【转】OpenCV图像的轮廓的匹配
- Python运算符和表达式
- Java配置文档
- MVP设计模式的写法
- 数据结构与算法(22)——二叉搜索树
- HTTP Status 500
- h265 Nalu类型判断及 sps 数据解析
- java工具类——java将一串数据按照gzip方式压缩和解压缩