当前位置: 首页 > news >正文

为什么JDK8.0 之后允许接口定义静态方法和默认方法呢?

为什么JDK8.0 之后允许接口定义静态方法和默认方法呢?

因为它违反了接口作为一个抽象标准定义的概念。**

静态方法:因为之前的标准类库设计中,有很多Collection/Colletions或者Path/Paths这样成对的接口和类,后面的类中都是静态方法,而这些静态方法都是为前面的接口服务的,那么这样设计一对API,不如把静态方法直接定义到接口中使用和维护更方便。

默认方法:(1)我们要在已有的老版接口中提供新方法时,如果添加抽象方法,就会涉及到原来使用这些接口的类就会有问题,那么为了保持与旧版本代码的兼容性,只能允许在接口中定义默认方法实现。比如:Java8中对Collection、List、Comparator等接口提供了丰富的默认方法。(2)当我们接口的某个抽象方法,在很多实现类中的实现代码是一样的,此时将这个抽象方法设计为默认方法更为合适,那么实现类就可以选择重写,也可以选择不重写。

http://www.lryc.cn/news/319825.html

相关文章:

  • 如何通过生成式AI增强人类的创造力
  • 力扣111---二叉树的最小深度(简单题,Java,递归+非递归)
  • C#处理文件
  • git |常用命令
  • 力扣100热题:两、三、四数之和,哈希+数组+双指针+排序
  • 国外visa卡怎么办理,可充ChatGPTPLUS、Claude、Midjourney
  • 【Web】记录[长城杯 2022 高校组]b4bycoffee题目复现
  • C++ 多路音频pcm混音算法
  • Golang 泛型定义类型的时候前面 ~ 代表什么意思
  • 泽众云真机-机型支持ADB调试功能即将上线
  • 基于springboot的购物商城管理系统
  • uni-app开发特点和开发流程
  • Sentinel篇:线程隔离和熔断降级
  • HTML静态网页成品作业(HTML+CSS)——家乡广州介绍设计制作(5个页面)
  • 【Java IO流】缓冲流和对象流的解析和应用实例
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Select)
  • mysql将一个表另存为新表,同时复制索引、约束、主键等信息
  • 基于springboot+vue的房屋交易平台
  • 17个工作必备的Python自动化代码分享(上篇)
  • python-0008-修改django数据库为mysql
  • oracle用户密码过期
  • 安全地使用v-html
  • MongoDB从0到1:高效数据使用方法
  • Go——运算符,变量和常量,基本类型
  • js使用canvas实现图片鼠标滚轮放大缩小拖拽预览,显示像素坐标,显示像素值
  • ArrayList 源码解析和设计思路
  • Win10系统使用IIS服务搭建WebDAV网站结合内网穿透公网访问本地文件
  • AWTK 开源串口屏的配置文件
  • Spring、SpringMVC、Spring Boot常见注解有哪些?不要混淆了哦
  • 在notion里面实现四象限清单