一、接口的默认方法

Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下:

interface Formula { double calculate(int a); default double sqrt(int a) { return Math.sqrt(a); }}

Formula接口在拥有calculate方法之外同时还定义了sqrt方法,实现了Formula接口的子类只需要实现一个calculate方法,默认方法sqrt将在子类上可以直接使用。

Formula formula = new Formula() { @Override public double calculate(int a) { return sqrt(a * 100); }};formula.calculate(100); // 100.0formula.sqrt(16); // 4.0

文中的formula被实现为一个匿名类的实例,该代码非常容易理解,6行代码实现了计算 sqrt(a * 100)。在下一节中,我们将会看到实现单方法接口的更简单的做法。

译者注: 在Java中只有单继承,如果要让一个类赋予新的特性,通常是使用接口来实现,在C++中支持多继承,允许一个子类同时具有多个父类的接口与功能,在其他语言中,让一个类同时具有其他的可复用代码的方法叫做mixin。新的Java 8 的这个特新在编译器实现的角度上来说更加接近Scala的trait。 在C#中也有名为扩展方法的概念,允许给已存在的类型扩展方法,和Java 8的这个在语义上有差别。

二、Lambda 表达式

首先看看在老版本的Java中是如何排列字符串的:

List names = Arrays.asList("peter

java8新特性_JAVA8十大新特性详解相关推荐

  1. Gartner2019年十大安全项目详解

    (文章来源https://www.sec-un.org/gartner2019年十大安全项目详解/ ) 1. 概述 2019年2月11日,Gartner一改过去在年度安全与风险管理峰会上发表10大安全 ...

  2. 大数据是什么和大数据技术十大核心原理详解

     一.数据核心原理   从"流程"核心转变为"数据"核心   大数据时代,计算模式也发生了转变,从"流程"核心转变为"数据&quo ...

  3. Gartner:2018年十大安全项目详解

    Gartner 2018年十大安全项目详解 Last Modified By Bennyye @ 2018-11-20 1     概述 2018年6月份,一年一度的Gartner安全与风险管理峰会上 ...

  4. 大数据技术十大核心原理详解

    一.数据核心原理--从"流程"核心转变为"数据"核心 大数据时代,计算模式也发生了转变,从"流程"核心转变为"数据"核心 ...

  5. mysql入门优化_MySQL数据库:MySQL十大优化技巧详解

    本文主要向大家介绍了MySQL数据库的MySQL十大优化技巧详解,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. WEB开发者不光要解决程序的效率问题,对数据库的快速访问和相应也是 ...

  6. ❤️十大排序算法详解❤️——可能是你看过最全的,完整版代码

    文章目录 前言 交集排序 冒泡 简单 快速排序 插入排序 直接插入排序 希尔排序 选择排序 简单选择排序 堆排序 归并排序 二路 多路 非比较类 计数排序 桶排序 基数排序 最后 前言 兄弟们,应上篇 ...

  7. java8新特性以及原因_JAVA8 十大新特性详解

    二.Lambda 表达式 首先看看在老版本的Java中是如何排列字符串的: List names = Arrays.asList("peter", "anna" ...

  8. 十大排序算法详解(二)归并排序、堆排序、计数排序、桶排序、基数排序

    文章目录 一.归并排序 1.1 归并排序基础[必会知识] 1.1.1 递归实现 1.1.2 非递归实现 1.2 归并排序优化 1.2.1 小数组使用插入排序 1.2.2 避免多余比较 1.2.3 节省 ...

  9. 算法之十大滤波算法详解

    限幅滤波法 1.方法限幅滤波法又称嵌位滤波法,或程序判断滤波法.这种滤波法的思路是: 先根据经验判断,确定两次采样允许的最大偏差值(设为A)每次检测到新采样值时进行判断: (1)如果本次新采样值与上次 ...

最新文章

  1. 全國身份證查詢系統nciis
  2. AppleWatch开发教程之Watch应用对象新增内容介绍以及编写运行代码
  3. C语言经典例24-分数累加和
  4. 阿里巴巴Druid数据源,史上最强的数据源,没有之一
  5. EasyUI中Calendar日历的简单使用
  6. C语言再学习 -- printf、scanf占位符
  7. 为何出现Error Loading Midas.dll消息?
  8. php读取移动硬盘数据,移动硬盘打不开,数据怎么恢复?
  9. void类型和void *的用法
  10. HALCON示例程序resistor.hdev通过不同焦距图像提取深度信息
  11. 【Python3 SelectKBest 调用personer出现的错误】
  12. 北京市将持续扩大5G网络建设规模 超前布局6G
  13. 速修复!热门代码覆盖率测试工具 Codecov 的脚本遭恶意修改,敏感信息被暴露...
  14. hibernate11--Criteria查询
  15. 在Mac OS X中配置Apache + PHP + MySQL 很详细
  16. php xml三级联动,jquery+xml实现三级联动步骤详解
  17. ue修改倚天服务器时间,正途私服UE修改一些配置脚本
  18. 如何将虚拟机上的文件复制到主机上
  19. Redis(八):进阶篇 - 事务
  20. Cypress前端测试左移分享

热门文章

  1. lisp 标记形心_标记-整理算法
  2. buck电路上下管_推荐 | 学好电路设计与仿真?你不能错过这两本书籍 ~
  3. 哈哈机器人送到冰雪小镇_从小镇到上海:两代人的接力洄游 | 活动回顾
  4. viewpage 去掉左右切换效果_ViewPager实现多页面切换以及动画效果
  5. mongotemplate中save抛出异常_异常处理的三个好习惯 | Python 工匠
  6. Dede 删除文档同时文章中的图片的方法
  7. Swift iOS : 内存管理
  8. VMware vCloud® Suite 5.5功能介绍
  9. LNMP与CA认证的童话故事
  10. Private Inheritance(what, where)