java 中使用匿名类直接new接口详解及实例代码

作者:杨俊明 时间:2021-08-13 22:26:12 

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

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


package contract;

public interface ISay {
  void sayHello();
}

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


package jimmy;
import contract.ISay;
public class Program {
 public static void main(String[] args) {
   ISay say = new ISay() {    
     public void sayHello() {
       System.out.println("Hello java!");
     }
   };
 }
}

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

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


package jimmy;

import contract.ISay;
import java.io.PrintStream;

class Program$1
implements ISay
{
public void sayHello()
{
 System.out.println("Hello java!");
}
}

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

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

来源:http://www.cnblogs.com/yjmyzz/p/3448330.html

标签:java,匿名类,new接口
0
投稿

猜你喜欢

  • Flutter中嵌入Android 原生TextView实例教程

    2023-07-05 02:02:00
  • 如何使用Jenkins构建GIT+Maven项目

    2021-11-18 04:42:52
  • Java后台线程操作示例【守护线程】

    2023-11-25 01:35:44
  • 基于springboot 配置文件context-path的坑

    2021-07-04 17:37:27
  • 浅谈java项目与javaweb项目导入jar包的区别

    2023-11-11 11:06:19
  • Java 守护线程_动力节点Java学院整理

    2023-11-28 07:51:14
  • Java面试题及答案集锦(基础题122道,代码题19道)

    2023-11-25 12:36:17
  • Java PreparedStatement用法详解

    2023-08-08 20:20:51
  • jdbc和mybatis的流式查询使用方法

    2023-08-24 15:39:25
  • IDEA中使用jclasslib插件可视化方式查看类字节码的过程详解

    2021-10-12 08:18:31
  • MyBatis 如何配置多个别名 typeAliasesPackage

    2021-11-16 06:35:54
  • 使用C++ Matlab中的lp2lp函数教程详解

    2023-07-13 17:13:12
  • 基于MapReduce实现决策树算法

    2023-10-20 16:05:40
  • Flutter 状态管理的实现

    2023-08-21 02:38:33
  • java代码执行字符串中的逻辑运算方法

    2023-11-29 12:13:06
  • java定时任务Timer和TimerTask使用详解

    2023-07-13 00:29:33
  • Flutter验证码输入框的2种方法实现

    2023-07-17 16:22:07
  • Android实现摇一摇功能

    2023-07-23 20:21:11
  • Java二分查找算法实现代码实例

    2023-08-24 05:34:23
  • SpringBoot 集成 activiti的示例代码

    2023-01-22 10:22:03
  • asp之家 软件编程 m.aspxhome.com