Java中的匿名内部类小结

 更新时间:2016年07月14日 14:06:06   作者:谢中涞  
java内部类分为: 成员内部类、静态嵌套类、方法内部类、匿名内部类。这篇文章主要介绍了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,这个和单独写实现类后再调用其实本质是一样,具体可以参见编译后生成目录.如下截图所示:

相关文章

  • Java 入门图形用户界面设计之事件处理上

    Java 入门图形用户界面设计之事件处理上

    图形界面(简称GUI)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受,本篇精讲Java语言中关于图形用户界面的事件处理
    2022-02-02
  • 详解如何独立使用ribbon实现业务客户端负载均衡

    详解如何独立使用ribbon实现业务客户端负载均衡

    这篇文章主要为大家介绍了详解如何独立使用ribbon实现业务客户端负载均衡,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • SpringBoot集成企业微信开发的实现

    SpringBoot集成企业微信开发的实现

    本文将详细介绍如何使用 Spring Boot 集成企业微信开发,通过企业微信 API 可以实现企业内部的一些自动化业务流程,提高工作效率,感兴趣的可以了解一下
    2023-07-07
  • 测试springboot项目出现Test Ignored的解决

    测试springboot项目出现Test Ignored的解决

    这篇文章主要介绍了测试springboot项目出现Test Ignored的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java基础之动态代理Cglib详解

    Java基础之动态代理Cglib详解

    这篇文章主要介绍了Java基础之动态代理Cglib详解,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-05-05
  • Spring中@RequestMapping、@PostMapping、@GetMapping的实现

    Spring中@RequestMapping、@PostMapping、@GetMapping的实现

    RequestMapping、@PostMapping和@GetMapping是三个非常常用的注解,本文就来介绍一下这三种注解的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • SpringBoot项目如何打包成war包

    SpringBoot项目如何打包成war包

    使用SpringBoot 开发项目,由于内置了Tomcat,所以项目可以直接启动,部署到服务器的时候,直接打成 jar 包,就可以运行了,这篇文章主要介绍了SpringBoot项目如何打包成war包,需要的朋友可以参考下
    2024-07-07
  • Java线程中的ThreadLocal类解读

    Java线程中的ThreadLocal类解读

    这篇文章主要介绍了Java线程中的ThreadLocal类解读,ThreadLocal是一个泛型类,作用是实现线程隔离,ThreadLocal类型的变量,在每个线程中都会对应一个具体对象,对象类型需要在声明ThreadLocal变量时指定,需要的朋友可以参考下
    2023-11-11
  • Nacos客户端本地缓存和故障转移方式

    Nacos客户端本地缓存和故障转移方式

    Nacos客户端在从Server获得服务时,若出现故障,会通过ServiceInfoHolder和FailoverReactor进行故障转移,ServiceInfoHolder缓存服务信息,FailoverReactor处理故障转移,包括开启故障转移开关、读取备份文件等
    2024-12-12
  • java中以DES的方式实现对称加密并提供密钥的实例

    java中以DES的方式实现对称加密并提供密钥的实例

    这篇文章主要介绍了java中以DES的方式实现对称加密并提供密钥的实例的相关资料,这里提供实例帮助大家学习理解这部分知识,需要的朋友可以参考下
    2017-08-08

最新评论