博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 8 中为什么要引出default方法
阅读量:5875 次
发布时间:2019-06-19

本文共 895 字,大约阅读时间需要 2 分钟。

(原)

default方法是java 8中新引入进的,它充许接口中除了有抽象方法以外,还可以拥用具有实现体的方法,这一点跟jdk8之前的版本已经完全不一样了,为什么要这样做呢?

拿List接口举例,在java 8以前的老系统中有一个开发人员自己写了一个类DefinedList,它继承于List接口。

毫无疑问,DefinedList将会实现List接口中的所有抽象方法。

在java 8中,甲骨文觉得其实可让List做更多的事,比如开发中常用的给List数据进行排序,于是它们想加一个sort方法。

但是由于List是接口,在接口里面加抽象方法定会让其实现类都增加sort方法的实现,除了java中List的实现如ArryaList,LinkedList需要加sort方法的实现,我们自己写的DefinedList也必需得加这个sort的实现。

如果老系统中的java由7升级到8,那么代码一定会报错。

而为了解决java版本向后兼容问题,在List中的sort方法中加入了实现体

@SuppressWarnings({"unchecked", "rawtypes"})    default void sort(Comparator
c) { Object[] a = this.toArray(); Arrays.sort(a, (Comparator) c); ListIterator
i = this.listIterator(); for (Object e : a) { i.next(); i.set((E) e); } }

如果此时再由java7升级到java8,那么DefinedList会一并的继承sort方法,DefinedList也不会报错,这样就可以完美的解决java向后兼容的问题。

 

转载于:https://www.cnblogs.com/LeeScofiled/p/7450030.html

你可能感兴趣的文章
怎么使用阿里云直播服务应用到现在主流直播平台中
查看>>
Xcode全局替换内容,一键Replace
查看>>
1000 加密算法
查看>>
exif_imagetype() 函数在linux下的php中不存在
查看>>
Ruby的case语句
查看>>
Linux的链接文件-ln命令
查看>>
maven的tomcat插件如何进行debug调试
查看>>
table表头固定
查看>>
截取字符串中两个字符串中的字符串
查看>>
spring xml properties split with comma for list
查看>>
判断点是否在三角形内
查看>>
Android实战简易教程-第二十三枪(基于Baas的用户注冊验证username是否反复功能!)...
查看>>
在odl中怎样实现rpc
查看>>
leetcode 110 Balanced Binary Tree
查看>>
python活用isdigit方法显示系统进程
查看>>
项目开发总结
查看>>
知行合一
查看>>
jmeter插件之jsonpath提取响应结果和做断言
查看>>
发布支持多线程的PowerShell模块 —— MultiThreadTaskRunner
查看>>
Ubuntu ctrl+alt会导致窗口还原的问题
查看>>