专栏首页菩提树下的杨过java:使用匿名类直接new接口

java:使用匿名类直接new接口

java中的匿名类有一个倍儿神奇的用法,见下面代码示例:

1 package contract;
2 
3 public interface ISay {
4     void sayHello();
5 }

上面是一个简单的接口,下面是如何使用:

 1 package jimmy;
 2 import contract.ISay;
 3 public class Program {
 4     public static void main(String[] args) {
 5         ISay say = new ISay() {          
 6             public void sayHello() {
 7                 System.out.println("Hello java!");
 8             }
 9         };
10     }
11 }

初看上去,就好象在“不提供接口实现的情况下,直接new了一个接口实例”,对于C#er来说,有一种尽毁三观的赶脚。

还好这只是假象,观察bin目录下的class输出,会发现有一个类似Program$1.class的文件,如果反编译观察一下,发现原来是编译器自动生成一个类Program$1:

 1 package jimmy;
 2 
 3 import contract.ISay;
 4 import java.io.PrintStream;
 5 
 6 class Program$1
 7   implements ISay
 8 {
 9   public void sayHello()
10   {
11     System.out.println("Hello java!");
12   }
13 }

如果有些场合,只需要临时需要创建一个接口的实现类,上面的"技巧"可以用来简化代码.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • spring-boot 速成(9) druid+mybatis 多数据源及读写分离的处理

    按上节继续学习,稍微复杂的业务系统,一般会将数据库按业务拆开,比如产品系统的数据库放在product db中,订单系统的数据库放在order db中...,然后...

    菩提树下的杨过
  • 基于spring boot 2.x的websocket示例

    spring boot 2/spring 5自带了websocket,下面是最基本的示例(包括java服务端、java客户端以及js客户端)

    菩提树下的杨过
  • XStream、JAXB 日期(Date)、数字(Number)格式化输出xml

    XStream、Jaxb是java中用于对象xml序列化/反序列化 的经典开源项目,利用它们将对象转换成xml时,经常会遇到日期(Date)、数字按指定格式输出...

    菩提树下的杨过
  • JAVA学习绘图颜色及其笔画属性设置字体显示文字

    package com.graphics; import java.awt.*; import java.awt.geom.Rectangle2D; impo...

    别先生
  • 源码分析 | 手写mybait-spring核心功能(干货好文一次学会工厂bean、类代理、bean注册的使用)

    一个知识点的学习过程基本分为;运行helloworld、熟练使用api、源码分析、核心专家。在分析mybaits以及mybatis-spring源码之前,我也只...

    小傅哥
  • Hadoop-HDFS浅谈

    HDFS是Hadoop中进行分布式存储的组件,旨在提供可靠的, 可扩展的, 高吞吐, 高并发的大数据访问. HDFS是一个主/从(Mater/Slave)体系结...

    IT_Skywalker
  • ActiveMQ --- 整合篇

    之前说到了activeMQ的一些基本用法,本文将介绍activeMQ如何与spring以及spring boot整合。

    贪挽懒月
  • 安卓开发_浅谈ListView之分页列表

    听着music睡
  • SpringBoot系列教程web篇之全局异常处理

    当我们的后端应用出现异常时,通常会将异常状况包装之后再返回给调用方或者前端,在实际的项目中,不可能对每一个地方都做好异常处理,再优雅的代码也可能抛出异常,那么在...

    一灰灰blog
  • 解决:springcloud eureka 注册的服务config-client 状态Status:UNKNOWN (1)

    1. eureka 注册的服务config-client 的 Status 显示为:UNKNOWN (1):

    微风-- 轻许--

扫码关注云+社区

领取腾讯云代金券