博客
关于我
匿名内部类
阅读量:329 次
发布时间:2019-03-04

本文共 1742 字,大约阅读时间需要 5 分钟。

匿名内部类的应用与示例

匿名内部类是一种在Java编程中简化内类定义的高级技巧,主要用于在抽象类或接口上定义特定的子类实现。这种结构适用于那些仅在特定上下文中使用一次的子类。

基本用法示例

考虑以下程序结构:

class JavaDemo {    public static void main(String[] args) {        // 向上转型        IMessage msg = new MessageImpl();        msg.send("消息内容");    }}// 接口定义抽象方法interface IMessage {    public void send(String str);}// 子类继承并覆写方法class MessageImpl implements IMessage {    public void send(String str) {        System.out.println(str);    }}

结果:消息内容会被打印出来。

在上述程序中,MessageImpl类仅用于实现接口的唯一方法。如果这种实现只在特定情况下使用,可以通过匿名内部类来简化代码结构。

匿名内部类的定义与使用

将上述程序改写为使用匿名内部类:

class JavaDemo {    public static void main(String[] args) {        IMessage msg = new IMessage() {            // 匿名内部类实现接口            public void send(String str) {                System.out.println(str);            }        };        msg.send("消息内容");    }}// 接口定义抽闲方法interface IMessage {    public void send(String str);}

效果:与之前的实现完全一致,但代码更加简洁。

静态方法返回匿名内部类

为了更方便地展示匿名内部类,可以通过静态方法返回一个匿名子类实例:

class JavaDemo {    public static void main(String[] args) {        IMessage msg = IMessage.getInstance();        msg.send("消息内容");    }    // 静态方法不需要实例化即可使用    public static IMessage getInstance() {        return new IMessage() {            // 返回一个匿名内部类            public void send(String str) {                System.out.println(str);            }        };    }}// 接口定义抽闲方法interface IMessage {    public void send(String str);    // 静态方法不需要实例化就可以使用    public static IMessage getInstance() {        return new IMessage() {            public void send(String str) {                System.out.println(str);            }        };    }}

效果:通过静态方法getInstance(),可以直接获取到一个匿名内部类实例,简化了调用流程。

匿名内部类的特点

  • 无名字:匿名内部类没有类名,只能通过引用操作。
  • 唯一性:每次定义都会生成新的子类实例。
  • 结构固定:匿名内部类通常只包含必要的方法实现,结构较为简洁。
  • 适用场景:适用于那些仅在特定上下文中使用一次的功能实现。

转载地址:http://gewe.baihongyu.com/

你可能感兴趣的文章
【设计模式】单例模式
查看>>
【设计模式】代理模式
查看>>
【SpringCloud】Hystrix熔断器
查看>>
【SpringCloud】Gateway新一代网关
查看>>
【Linux】2.3 Linux目录结构
查看>>
java.util.Optional学习笔记
查看>>