zoukankan      html  css  js  c++  java
  • Java中的匿名内部类

    匿名内部类,是在方法体内,因为是匿名的,故只能使用一次。前提条件:必须继承一个父类或实现一个接口。

    简化代码。

    匿名内部类: 是一种特殊的语法,

      *   用来快速创建抽象类的子类对象
        *   用来快速创建 接口的实现类对象

    语法:
    new 抽象父类([参数]) 或 接口()
    {
    ....
    }

    • 一般的代码(未使用匿名内部类)
    interface IUsb
    {
        abstract public void swapData();
    }
    class Keyboard implements IUsb
    {
        public void swapData()
        {
            System.out.println("键盘的数据交换。。");
        }
    }
    class Mouse implements IUsb
    {
        public void swapData()
        {
            System.out.println("鼠标的数据交换。。");
        }
    }
    class Motherboard
    {
        public void pluginIn(IUsb usb)
        {
            usb.swapData();
        }
    }
    
    public class helloworld
    {
        public static void main(String[] args)
        {
            Motherboard m = new Motherboard();
            m.pluginIn(new Keyboard());
            m.pluginIn(new Mouse());
        }
    }

    生成的字节码文件:

    •  使用匿名内部类后
    interface IUsb
    {
        abstract public void swapData();
    }
    //***删除了class Keyboard 和 Mouse
    class Motherboard
    {
        public void pluginIn(IUsb usb)
        {
            usb.swapData();
        }
    }
    
    public class helloworld
    {
        public static void main(String[] args)
        {
            Motherboard m = new Motherboard();
            m.pluginIn(new IUsb()
                {
                    public void swapData()
                    {
                        System.out.println("键盘数据交换。。");
                    }
                });
            m.pluginIn(new IUsb()
                {
                    public void swapData()
                    {
                        System.out.println("鼠标数据交换。。");
                    }
                });
        }
    }

    生成的字节码文件:

    常记溪亭日暮,沉醉不知归路。兴尽晚回舟,误入藕花深处。争渡,争渡,惊起一滩鸥鹭。

    昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否?知否?应是绿肥红瘦。
  • 相关阅读:
    SpringCloud Alibaba Nacos详解
    常见设计模式
    Mybatis TypeHandler类型处理器
    Mybatis存取json字段转为Java对象方案
    Spring AOP 切面编程详解
    Spring Data 、Spring Data JPA 、Hibernate之间的关系及SpringDataJPA简单使用
    28张图解 | 互联网究竟是「如何连接,如何进行通信」的?
    Java代码实现 图片添加多行水印且自动换行
    SpringMVC 快速入门
    获取本地磁盘得到.txt文件
  • 原文地址:https://www.cnblogs.com/htj10/p/12360428.html
Copyright © 2011-2022 走看看