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接口
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Flutter中嵌入Android 原生TextView实例教程
2023-07-05 02:02:00
![](https://img.aspxhome.com/file/2023/5/83515_0s.png)
如何使用Jenkins构建GIT+Maven项目
2021-11-18 04:42:52
![](https://img.aspxhome.com/file/2023/9/61839_0s.png)
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
![](https://img.aspxhome.com/file/2023/7/60177_0s.png)
Java面试题及答案集锦(基础题122道,代码题19道)
2023-11-25 12:36:17
Java PreparedStatement用法详解
2023-08-08 20:20:51
![](https://img.aspxhome.com/file/2023/1/58061_0s.png)
jdbc和mybatis的流式查询使用方法
2023-08-24 15:39:25
IDEA中使用jclasslib插件可视化方式查看类字节码的过程详解
2021-10-12 08:18:31
![](https://img.aspxhome.com/file/2023/3/60923_0s.png)
MyBatis 如何配置多个别名 typeAliasesPackage
2021-11-16 06:35:54
使用C++ Matlab中的lp2lp函数教程详解
2023-07-13 17:13:12
![](https://img.aspxhome.com/file/2023/0/103080_0s.png)
基于MapReduce实现决策树算法
2023-10-20 16:05:40
Flutter 状态管理的实现
2023-08-21 02:38:33
![](https://img.aspxhome.com/file/2023/0/108330_0s.png)
java代码执行字符串中的逻辑运算方法
2023-11-29 12:13:06
java定时任务Timer和TimerTask使用详解
2023-07-13 00:29:33
Flutter验证码输入框的2种方法实现
2023-07-17 16:22:07
![](https://img.aspxhome.com/file/2023/9/78329_0s.png)
Android实现摇一摇功能
2023-07-23 20:21:11
Java二分查找算法实现代码实例
2023-08-24 05:34:23
SpringBoot 集成 activiti的示例代码
2023-01-22 10:22:03
![](https://img.aspxhome.com/file/2023/8/62238_0s.png)