`
jobar
  • 浏览: 347406 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

缺省方法(1)-什么是缺省方法?

 
阅读更多
什么是缺省方法?
在"为何要在java中加入Lambda表达式"中使用了一个简单的集合方法forEach来举例,接受一个函数将之作用于每个传入的元素,例如:
   
pointList.forEach(p -> p.move(p.y, p.x));

但java集合框架在15年前设计的时候并没有考虑函数式思想,没有forEach方法,或这种策略要求的任何其他方法。将这些方法单独添加到集合框架中会破坏高度基于接口的集合框架类的一致性,就是这些接口定义了客户端代码依赖的契约(出于同样的原因,增加静态方法到工具集合类中也不是一个可取的解决方案)。所以框架接口需要反映添加到其集合框架中的新功能。但到现在为止将新方法添加到一个接口中,不强制修改现有类是不可能的,因为implements关键字代表由实现类来覆盖接口中所有的抽象方法。如果该接口增加了一个新的抽象方法,实现类也必须改变来实现它。
这就是引入缺省方法的理由(也称为虚拟扩展方法或者defender方法)。他们的目的是使接口得以延伸而不会与现有实现类不兼容。他们这种需求带动了接口的一个显著变化,根据JavaDoc中定义的抽象方法的语义,先前只能声明为抽象方法;而现在则相反,他们也可以以缺省实现的方式来声明具体的方法。例如,Iterator可以假想成有一个像skip这样的方法扩展(跳过单个元素):

   
interface Iterator {
        // existing method declarations
        default void skip() {
            if (hasNext()) next();
        }
    }

假设Iterator以这种方式被扩展:所有实现类现在会自动暴露一个skip方法,客户端代码可以像调用完全相同的抽象接口方法一样调用skip。如果skip被一个实现了Iterator接口的的实例调用而没有为之提供实现,那么在接口中的默认实现就会被调用。另外,因为缺省方法是虚拟的,一个实现Iterator的类可以用更好或更具体的实现来覆盖默认的方法。

“为什么缺省方法需要一个关键字”回答了有关默认方法语法的一个常见问题。
分享到:
评论

相关推荐

    从关联理论看翻译中文化缺省问题---英语论文精修.docx

    【文化缺省】在翻译中,文化缺省是指原文中隐含的文化背景、习俗或知识,这些在目标语言文化中可能不为人知。处理文化缺省需要译者具有丰富的跨文化知识,有时需要添加注释或采用等效替换,以使目标读者能理解并接受...

    2.如何关闭缺省工具栏?(Visual C++编程 源代码)

    2.如何关闭缺省工具栏?(Visual C++编程 源代码)2.如何关闭缺省工具栏?(Visual C++编程 源代码)2.如何关闭缺省工具栏?(Visual C++编程 源代码)2.如何关闭缺省工具栏?(Visual C++编程 源代码)2.如何关闭...

    函数参数缺省与重载,命名和缺省规则

    在编程语言中,函数参数缺省与重载是两种提高代码可读性和灵活性的重要机制。首先,我们来探讨函数重载。函数重载允许在同一个作用域内定义多个同名函数,但这些函数的参数列表必须有所不同,通常体现在参数数量或...

    21.如何关闭缺省状态栏?(Visual C++编程 源代码)

    21.如何关闭缺省状态栏?(Visual C++编程 源代码)21.如何关闭缺省状态栏?(Visual C++编程 源代码)21.如何关闭缺省状态栏?(Visual C++编程 源代码)21.如何关闭缺省状态栏?(Visual C++编程 源代码)21.如何...

    ios-全局缺省页.zip

    在Swift或Objective-C中,我们可以通过设置UIViewController的视图层次结构,或通过UITableViewDataSource和UITableViewDelegate的方法来动态切换显示缺省页和实际内容。对于更复杂的交互,可以使用Storyboard或XIB...

    Python 缺省参数-指定函数缺省参数的默认值

    Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和...

    行业分类-设备装置-检测缺省网关状态的方法及系统.zip

    本文将详细阐述“行业分类-设备装置-检测缺省网关状态的方法及系统”的相关知识点,并深入探讨检测缺省网关状态的重要性及其实际应用。 首先,理解检测缺省网关状态的方法。通常,设备会通过ICMP(Internet Control...

    行业资料-建筑装置-建立缺省数据无线承载的方法和装置.zip

    建立缺省数据无线承载的方法是确保系统正常运行和高效通信的关键步骤。缺省数据是预先设定的一组参数或配置,这些数据在设备启动或初始化时使用,为系统提供基本的运行环境。例如,它们可能包括温度阈值、照明设置、...

    计算机网络实验报告——静态路由与缺省路由的使用.pdf

    在实验中,我们配置了Router1和Router2的缺省路由,使得它们可以将未知的流量发送到默认网关上。 五、实验结果 通过本实验,我们可以看到静态路由和缺省路由的实际应用场景。在实际的网络环境中,静态路由和缺省...

    实训6 静态路由与缺省路由的配置1

    在实训中,通过配置实例能够清楚地理解静态路由和缺省路由的概念以及配置方法,从而为进一步学习动态路由协议等更复杂的网络技术打下坚实的基础。对于网络管理员而言,掌握这些基础知识是必不可少的,它能帮助管理员...

    爱普生针式打印机EPSONLQ-630K和LQ-635K缺省设值的设置方法.doc

    本文将详细介绍这两款打印机的缺省设值设置方法,帮助用户更好地理解和操作设备。 首先,了解缺省设值的重要性。缺省设值是打印机出厂时预设的一组参数,包括打印速度、浓度、纸张类型等,这些设定直接影响到打印...

    行业分类-设备装置-一种可缺省关键词的挖掘方法、数据搜索方法及设备.zip

    标题中的“行业分类-设备装置-一种可缺省关键词的挖掘方法、数据搜索方法及设备”揭示了这个压缩包文件包含的内容主要与信息技术领域内的设备装置相关,特别是关于数据处理和搜索的技术。其中,关键词挖掘是信息检索...

    ospf中关于缺省路由的发布总结

    本文旨在深入探讨OSPF网络中如何有效地发布缺省路由,包括普通区域、STUB区域、完全STUB区域以及NSSA区域中的具体实施方法。 #### OSPF缺省路由的基础知识 首先,理解缺省路由的生成方式至关重要。在OSPF中,缺省...

    行业分类-设备装置-一种缺省权限配置的方法和装置.zip

    "行业分类-设备装置-一种缺省权限配置的方法和装置"的主题涉及到的是如何有效地管理设备或系统的权限分配,以确保系统的稳定运行和数据的安全。这通常涵盖权限管理、访问控制、安全策略以及系统配置等多个方面。 ...

    S系列交换机缺省帐号与密码.zip

    总的来说,理解华为S系列交换机的缺省账户和密码,以及如何管理和加强安全配置,对于任何网络管理员来说都是至关重要的。通过定期更改默认密码、启用加密通信协议、实施严格的认证机制以及应用访问控制,可以显著...

    西门子如何在SCALANCE X414-3E上配置缺省路由?.pdf

    在计算机网络中,缺省路由是一种特殊的静态路由,当数据包的目的地址不在路由表中时,缺省路由就会被使用。换言之,缺省路由是当没有其他更具体的路由匹配时,数据包将被发送到的路径。缺省路由通常被配置在网络的...

    一步一步教你修改POWERMILL缺省菜单.doc

    一、什么是缺省菜单? 在 PowerMill(以下简称 PM)中,缺省菜单是指在 3D 界面上右键点击时弹出的菜单。它不同于右键菜单的默认菜单。 二、修改缺省菜单的好处 修改缺省菜单可以带来很多好处,如: * 更快:修改...

    行业文档-设计装置-缺省承载上策略计费控制规则移除方法和装置.zip

    1. **缺省承载(DefaultBearer)**:在移动通信网络中,尤其是4G和5G网络中,承载(Bearer)是指为用户提供特定服务质量的数据传输通道。缺省承载是为所有非分组数据业务(Non-GBR,非保证比特率)提供服务的基本...

    Stata数据集缺省值的处理

    处理Stata数据集缺省值的方法有很多种,以下是三种基本且实用的策略: 1. 删除含有缺失值的行: 这种方法适用于那些不能接受任何缺失值的变量或整体分析。使用`rowmiss(_all)`函数可以检查数据集中是否有任何缺失...

    H5缺省页(pc端禁止f12调试等操作)

    标题“H5缺省页(pc端禁止f12调试等操作)”提到的技术就是针对这种情况,旨在防止用户在PC端使用F12开发者工具对页面进行调试。这一方法主要依赖于JavaScript来实现,因此涉及到的知识点主要包括H5、前端技术和...

Global site tag (gtag.js) - Google Analytics