Java中的匿名内部类小结
java内部类分为: 成员内部类、静态嵌套类、方法内部类、匿名内部类 。
在java的世界里,提供了匿名内部类语法,用于帮助大家简化代码,本文简要从接口,抽象类以及常规类以代码的形式描述其常用模式。
1. 接口模式
public interface IWriter { void write(); } public static void main(String[] args) { IWriter writer = new IWriter() { @Override public void write() { System.out.println("IWriter write..."); } }; writer.write(); }
2.抽象类
public abstract class AbstractWriter { public abstract void write(); } public static void main(String[] args) { AbstractWriter abstractWriter = new AbstractWriter() { @Override public void write() { System.out.println("AbstractWriter write..."); } }; abstractWriter.write(); }
3.常规类
public class TextWriter implements IWriter { @Override public void write() { System.out.print("text writer.."); } } public static void main(String[] args) { TextWriter textWriter = new TextWriter() { @Override public void write() { System.out.println("TextWriter 2 write..."); } }; textWriter.write(); }
4.在线程中使用
public static void main(String[] args) { Thread thread = new Thread() { @Override public void run() { new IWriter() { @Override public void write() { System.out.println("IWriter thread write..."); } }.write(); } }; thread.run(); }
5.结语
综上可以看出,其实不管是接口中,抽象类,还是常规类派生出来的匿名内部类,其用法都是一样的。之所以说这个是一个语法糖,其本质是编译器在编译的时候,将匿名内部类单独编译成不多个不同的class,这个和单独写实现类后再调用其实本质是一样,具体可以参见编译后生成目录.如下截图所示:
相关文章
关于Spring的AnnotationAwareAspectJAutoProxyCreator类解析
这篇文章主要介绍了关于Spring的AnnotationAwareAspectJAutoProxyCreator类解析,Spring是一个开源免费的框架 , 容器,是一个轻量级的框架 ,需要的朋友可以参考下2023-05-05使用@Valid+BindingResult进行controller参数校验方式
这篇文章主要介绍了使用@Valid+BindingResult进行controller参数校验方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-12-12一段代码搞懂关于Java中List、Set集合及Map的使用
这篇文章主要介绍了关于Java中List、Set集合及Map的使用及list,set和map三者的区别介绍,非常不错,具有参考借鉴价值,需要的朋友可以参考下2016-08-08SpringBoot2.0整合jackson配置日期格式化和反序列化的实现
这篇文章主要介绍了SpringBoot2.0整合jackson配置日期格式化和反序列化的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-11-11
最新评论