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

    我们知道接口一般用于定义一种规范或操作协议,然后子类实现接口的所有功能。如下面的简单代码:

    定义IMessage接口

    package org.lyk.entities;
    
    public interface IMessage
    {
        public abstract void print();
    }

    定义Message类实现IMessage接口

    package org.lyk.entities;
    
    public class Message implements IMessage
    {
    
        @Override
        public void print()
        {
            System.out.println("正在打印消息!");
        }
    
    }

    测试代码:

    package org.lyk.main;
    
    import org.lyk.entities.*;
    
    public class Main
    {
        public static void main(String[] args)
        {
            IMessage msg = new Message();
            showMsg(msg);
        }
    
        public static void showMsg(IMessage msg)
        {
            msg.print();
        }
    }

    上面的代码能很好的运行。但是如果我们有这样一种场景: Message类只会被使用一次,用完后就根本不关心这个类是否存在。对于这种情况,我们为这种临时使用的类再去定义一个.java文件在项目中显得没有必要。此时我们可以使用匿名类。

    下面的测试代码演示了匿名类的定义与使用:

    package org.lyk.main;
    
    import org.lyk.entities.*;
    
    public class Main
    {
        public static void main(String[] args)
        { 
            showMsg(new IMessage()
            {
                
                @Override
                public void print()
                {
                    System.out.println("测试代码:匿名类的使用");
                }
            });
        }
    
        public static void showMsg(IMessage msg)
        {
            msg.print();
        }
    }

    可以看到,我们没有去手动实例化一个类,而是采用了“new 接口名“这种方式直接定义了一个匿名类对象,然后将它作为参数传递个函数。

  • 相关阅读:
    [cf621E]Wet Shark and Blocks
    [学习笔记]数论
    [CZYZ2016]day8
    Python 对 Excel 操作用法详解
    HTML学记笔记
    Django 2.2_错误:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position 9737: illegal multibyte sequence
    Python在终端通过pip安装好包以后,在Pycharm中依然无法使用的解决办法
    div的移动特效
    jQuery各种动画效果
    jqZoom插件
  • 原文地址:https://www.cnblogs.com/kuillldan/p/5911609.html
Copyright © 2011-2022 走看看