在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,这个和单独写实现类后再调用其实本质是一样,具体可以参见编译后生成目录.如下截图所示:

java中匿名内部类总结的更多相关文章

  1. java中匿名内部类的匿名构造函数是怎么用的

    java中匿名内部类的匿名构造函数是怎么用的下面的例子说明匿名内部类的匿名构造函数的用法 例2.7.2_0interface FigureMark_to_win {    void whoAmI(); ...

  2. java中匿名内部类的应用

    如果某一个类实现了接口,而且仅仅在程序代码中使用了一次,那么就没必要单独定义该方法,可以通过接口来定义匿名内部类 interface Message{ public void print(); } p ...

  3. Java中匿名内部类

    匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象 ...

  4. 简单谈谈java中匿名内部类构造函数?

    先看看下面的代码能不能编译通过: public static void main(String[] args) {List l1 = new ArrayList();List l2 = new Arr ...

  5. Lambda 表达式,Java中应用Lambda 表达式

    一.Lambda 表达式 简单来说,编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数. 链接:知乎 先举一个普通的 Python 例 ...

  6. Java中的内部类(成员内部类、静态内部类、局部内部类、匿名内部类)

    Java中的内部类(成员内部类.静态内部类.局部内部类.匿名内部类) 神话丿小王子的博客主页 我们先看这样一段话:人是由大脑.肢体.器官等身体结果组成.而组成我们人体的心脏它也有自己的属性和行为(血液 ...

  7. java中的匿名内部类总结(转)

    源出处: java中的匿名内部类总结 匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接 ...

  8. java中的匿名内部类

    匿名内部类在java编码中不是很常见,它可一让类实现多继承的特性(多个父类~1个子类) java中的匿名内部类总结http://www.cnblogs.com/nerxious/archive/201 ...

  9. java中一个引人深思的匿名内部类

    前两天去面试javaweb问到一个问题,在你的项目中有没有用到线程,我特么的一想,这东西不是在c层面的吗,所以说我不了解线程..... 后来回去想啊想啊,我操这特么的不是再问我事物的控制,消息队列的回 ...

随机推荐

  1. flask 简易注册登陆

    db.py import MySQLdb conn = MySQLdb.connect(', 'test1') cur = conn.cursor() def addUser (username,pa ...

  2. css3之背景定位

    属性: background-position: left top || left bottom || right top || right bottom || center center || 像素 ...

  3. mybatis向数据库插入数据 (传入的是一个实体类)

    /** * 插入用户信息 user为实体类 * @param user */ public int insert( User user); //实体类不用@param标注 //mybatis的xml文 ...

  4. 树莓派搭建web服务器(详细且良心)

    安装Apache Apache服务器可以从Debian的源中下载.可以用apt下载. 首先要更新apt的软件列表.如果不运行sudo apt-get updata的话,apt软件就不知道有没有新的软件 ...

  5. delphi之socket通讯

    使用了2个组建: TServerSocket TClientSocket ------------------TServerSocket--------------------------- //开启 ...

  6. CSS media query应用中的层叠特性使用最佳实践

    media query是css3规范中引入的,它提供了一种responsive design的基础机制:浏览器在不同size的设备中将以不同样式展现网页,这就给一个网页能够适应不同device一种可能 ...

  7. VS断点不生效

    工程属性页中“配置属性”->“C/C++”->“常规”->“调试信息格式”,选择“用于“编辑并继承”的程序数据库(/ZI)”. 在“配置属性”->“链接器”->“调试”- ...

  8. ppt中调整图片位置

    按方向键时,如果调整的位置过大,可以使用 Ctrl + 方向键.

  9. lua-excel助手

    excel是我们工作及生活当中不可或缺的东西,好吧,我是一个游戏程序员,数值哥哥肯定会给我些表格的.回归正题,为什么需要做这个封装? 为什么需要这个项目,因为我们需要使用程序进行自动化操作 VBA我们 ...

  10. July 13th 2017 Week 28th Thursday

    No dream is too big, and no dreamer is too small. 梦想再大也不嫌大,追梦的人再小也不嫌小. Hold on to your dreams, but b ...