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