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

posted on 2016-09-27 09:37  kuillldan  阅读(224)  评论(0编辑  收藏  举报