Java8在接口的变化

对接口的改变:

1.增加了default方法和static方法,这两种方法完全可以有方法体。

2.default方法属于实例,static方法属于类(接口)。

3.接口里面的静态方法不会被基础。静态变量会被继承。

4.如果一个类实现了多个接口,并且这些接口互相之间没有继承关系,同时存在相同的默认方法,
会报错:不相关默认值。如果多个接口有继承关系,默认方法会被子接口覆盖。

5.如果遇到有多个继承,并且有相同的默认方法,实现类可以通过特殊语法指定要访问哪个接口的方法,在实现类中重写默认方法,在方法里面写:、

<接口>.super.<方法名>(【参数】);

6.如果一个接口只有一个抽象方法(包括继承的),该接口是一个函数式接口。函数式接口可以使用lambda表达式实现。

7.如果接口里面使用FunctionalInterface注解限定接口里面只能有一个抽象方法。

java8接口的变化“

1.静态方法和默认方法,方法前面使用static或者default进行修饰,这种方法必须有方法体。

2.如果一个接口只有一个抽象方法,默认自动变成函数式接口。

3.如果接口里面使用FunctionalInterface注解限定接口里面只能有一个抽象方法。

时间: 2024-11-13 10:30:59

Java8在接口的变化的相关文章

java代码之美(14)---Java8 函数式接口

Java8 函数式接口 之前写了有关JDK8的Lambda表达式:java代码之美(1)---Java8 Lambda 函数式接口可以理解就是为Lambda服务的,它们组合在一起可以让你的代码看去更加简洁. 一.概念 1.什么是函数式接口 概念 所谓的函数式接口, 当然首先是一个接口, 然后就是在这个接口里面 只能有一个抽象方法. 有关函数式接口,有个专门的注解叫:@FunctionalInterface.该注解主要特点有: 1.该注解只能标记在"有且仅有一个抽象方法"的接口上,表示函

Java8函数式接口以及lambda表达式实践

最近重新深入了解和学习了Java8的函数式接口以及lambda表达式,发现以前写的代码大多都是伪-函数表达式,因此重新精炼了一下的这部分代码,仅供参考,如有更好的方式,欢迎在评论区留言. 1.计算订单总金额 订单总金额一般是在后台循环叠加每个购买商品的金额已获取到,通常的方式如下 BigDecimal totalAmount = new BigDecimal(0); for (VenditionProduct venditionProduct : venditionVo.getVendition

java8函数式接口(Functional Interface)

介绍 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口. 函数式接口可以被隐式转换为 lambda 表达式(箭头函数). 函数式接口代表的一种契约, 一种对某个特定函数类型的契约.Lambda表达式不能脱离上下文而存在,它必须要有一个明确的目标类型(interface),而这个目标类型就是某个函数式接口. java8之前已经存在的函数式接口有很多,比如java.lang.Runnable.java.util.concurrent.

Java8函数式接口简介

一.函数式接口 1. 可以使用注解@FunctionalInterface 2. 函数式接口有且仅有一个抽象方法:如果一个接口里只有一个抽象方法,这个接口可以作为函数式接口 3. 可以有0个或多个非抽象方法 4. 可以被隐式转换为lambda表达式 5. 函数式接口的实例 a. lambda表达式:提供参数列表,代码块主体,必须依附于函数式接口的实例对象 b. 方法引用,把函数当参数使用 6. java8允许在接口中加入具体方法/default方法/static方法,default方法 二.Su

微信小程序请求API接口PHPSESSID变化的解决方式

微信小程序开发,请求服务器API的方法使用的是微信官方提供的wx.request()方法.在开发中发现,每一个请求都会生成一个独立的PHPSESSID,如下图示: 搜索后得知,这是由于wx.request()造成的.如果直接使用浏览器请求并不会出现这种情况. 解决方式如下: 通过登录接口获取到用户的session_key 和 open_id,设置session信息如下: $3rd_session = md5(session_key . $open_id) $_SESSION[$3rd_sessi

Java8函数式接口/Lambda表达式/接口默认方法/接口静态方法/接口冲突方法重写/lambda表达式指定泛型类型等

一:函数式接口 1.函数式接口的概念就是此接口必须有且只能有一个抽象方法,可以通过@FunctionalInterface来显示规定(类似@Override),但是没有此注解的但是只有一个抽象方法的接口也是函数式接口:(接口也和类一样有包访问权限,但是内部的方法则默认是public) @FunctionalInterface public interface IFoo{ void print(); }  // 就是一个最简单的函数式接口,但是如果再有个如void print2()抽象方法则这个接

[二] java8 函数式接口详解 函数接口详解 lambda表达式 匿名函数 方法引用使用含义 函数式接口实例 如何定义函数式接口

函数式接口详细定义 package java.lang; import java.lang.annotation.*; /** * An informative annotation type used to indicate that an interface * type declaration is intended to be a <i>functional interface</i> as * defined by the Java Language Specificat

java8 java9 接口 interface

1.接口 在 Java 8 接口引入了一些新功能--默认方法和静态方法.我们可以在Java SE 8的接口中编写方法实现,仅仅需要使用 default 关键字或者static关键字来定义它们 java9 原文地址:https://www.cnblogs.com/aliceQin/p/9943392.html

java8 stream接口 终端操作 min,max,findFirst,findAny

// 方法一 https://www.cnblogs.com/secbro/p/11685681.html Integer id = list.stream().map(Foo::getId).findAny().orElse(null); // 方法二 Integer id = list.stream().findAny().map(Foo::getId).orElse(-1); 如果删除方法一,只执行方法二,则不会出现异常.为什么呢? 具体分析: 首先方法一种,list.stream().m