• 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 接口名“这种方式直接定义了一个匿名类对象,然后将它作为参数传递个函数。

  • 相关阅读:
    算法学习——贪心篇
    Centos7下搭建LAMP环境,安装wordpress(不会生产博客,只是一名博客搬运工)(菜鸟)
    小白创建网站的曲折之路
    7.2.5 多层嵌套的if语句
    7.2.4 else与if配对
    7.2.3
    7.4 electirc.c -- 计算电费
    oracle数据库命令行查看存储过程
    Linux下如何查看进程准确启动时间
    7.2 if else 语句
  • 原文地址:https://www.cnblogs.com/kuillldan/p/5911609.html
Copyright © 2020-2023  润新知