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("鼠标数据交换。。");
                    }
                });
        }
    }

    生成的字节码文件:

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

    昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否?知否?应是绿肥红瘦。
  • 相关阅读:
    Windows消息循环
    python 如何获得网卡的Ip地址
    curl 如何测量它花了多少时间?
    mininet 如何创建有不同带宽的链路
    Emacs学习笔记:多窗口操作
    RYU 如何扔掉一个符合要求的数据包
    RYU OFPMatch 的使用方法
    __attribute__如何使用的记录
    make file 和 GCC标志学习
    mininet and ovs 总结
  • 原文地址:https://www.cnblogs.com/htj10/p/12360428.html
Copyright © 2011-2022 走看看