Java中的匿名内部类小结
作者:谢中涞 发布时间:2021-05-29 06:29:38
标签: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,这个和单独写实现类后再调用其实本质是一样,具体可以参见编译后生成目录.如下截图所示:
来源:http://www.cnblogs.com/xie-zhonglai/archive/2016/07/14/java_anonymity_class.html


猜你喜欢
- 本文实例为大家分享了unity实现手游虚拟摇杆的具体代码,供大家参考,具体内容如下using System.Collections;usin
- Java的位操作符用来操作整数基本数据类型中的单个“比特”(bit),即代进制位。而我们知道比特就是0和1,那么,位操作就是对这些数据进行基
- 本文演示如何在Android中实现ListView圆角效果。无论是网站,还是APP,人们都爱看一些新颖的视图效果。直角看多了,就想看看圆角,
- 本文实例讲述了C#抓取当前屏幕并保存为图片的方法。分享给大家供大家参考。具体分析如下:这是一个C#实现的屏幕抓取程序,可以抓取整个屏幕保存为
- Android 开发的程序员开发程序的时候,一定为log而苦恼过吧。Eclipse老是Log找不到,是不是很让人不爽,虽然Android S
- 前言使用了flutter一段时间,越来越喜欢flutter了,flutter比我们想象中的强大。这篇文章介绍了怎么使用flutter来展示一
- 这个例子用于演示在Spring Boot应用中如何验证Web 应用的输入,我们将会建立一个简单的Spring MVC应用,来读取用户输入并使
- 在开发中,我们通常需要将从数据库中查询的集合数据转换成类似文件系统一样的树形集合,比如:省市单位,部门机构,书籍分类等TreeNode对象@
- 本文实例为大家分享了java实现打砖块小游戏的具体代码,供大家参考,具体内容如下源码共包含两个文件文件1:play_zhuankuai.ja
- 本文章是基于鸿洋的Android 自定义View (一) 的一些扩展,以及对Android自定义View构造函数详解里面内容的一些转载。首先
- 一、前言滚动条一般用于加载进度,我们在看视频的时候或者在浏览网页的时候经常能看到加载进度的页面。在程序开发中,默认的进度加载样式可能跟程序风
- 本文实例为大家分享了SpringBoot实现分页功能的具体代码,供大家参考,具体内容如下新建demo\src\main\java\com\e
- 作为一个ORM框架,hibernate肯定也需要满足我们实现表与表之间进行关联的需要。hibernate在关联方法的实现很简单。下面我们先来
- 项目中要用到以截断的方式取小数点后两位,故写了以下方法: /// <summary> /// 将小数值按指定的小数位数截断 //
- 本文实例讲述了Android使用ListView实现下拉刷新及上拉显示更多的方法。分享给大家供大家参考,具体如下:今天得需求是做listvi
- 标题栏中的返回按钮在实际使用中用的比较多,今天就来讲讲我在项目开发中的使用经历,话不多说,还是直接上源码,上源码是最给力的。一、 编写自定义
- SpringBoot自带Tomcat,所以我们的项目可以单独部署,不需要依赖Window、Linux系统中的服务器,所以打包出来的Jar包是
- 目录前言Lottie案例尝试1. 集成依赖2. 添加 LottieAnimationView 加载网络资源3. 加载本地资源4. 循环播放
- 事件处理主要涉及:事件源,事件,事件处理者在GUI中事件源是事件发生的场所,通常是各个组件,如被单击的按钮;事件是用户对界面的操作,如操作键
- 一、Stream流引入Lambda表达式,基于Lambda所带来的函数式编程,又引入了一个全新的Stream概念,用于解决集合类库既有的鼻端