java请求接口示例_Java 8:功能接口示例
java请求接口示例
为了支持Java 8中的lambda表达式,他们引入了Functional Interfaces。
具有单一抽象方法的接口可以称为功能接口。
Runnable,Comparator,Cloneable是功能接口的一些示例。 我们可以使用Lambda表达式实现这些功能接口。
例如:
Thread t =new Thread(new Runnable(){public void run(){System.out.println("Runnable implemented by using Lambda Expression");}
});
这是创建线程的旧方法。
由于Runnable具有单一抽象方法,我们可以将其视为功能接口,并且可以使用如下所示的Lambda表达式。
Thread t = new Thread(()->{System.out.println("Runnable implemented by using Lambda Expression");
});
在这里,我们没有传递Runnable对象,而是传递了lambda表达式。
声明我们自己的功能接口:
我们可以通过限定了S个英格尔一个 bstract M在接口ethod宣布我们自己的功能界面。
public interface FunctionalInterfaceTest{
void display();
}
//Test class to implement above interface
public class FunctionInterfaceTestImpl {public static void main(String[] args){//Old way using anonymous inner classFunctionalInterfaceTest fit = new FunctionalInterfaceTest(){public void display(){System.out.println("Display from old way");}};fit.display();//outputs: Display from old way//Using lambda expressionFunctionalInterfaceTest newWay = () -> {System.out.println("Display from new Lambda Expression");}newWay.display();//outputs : Display from new Lambda Expression}
}
我们可以使用@FunctionalInterface批注进行批注,以告知编译时错误。 它是可选的
例如:
@FunctionalInterface
public interface FunctionalInterfaceTest{void display();void anotherDisplay();//shows an error, FunctionalInterface should have only one abstarct method.
}
默认方法:
功能接口不能具有多个抽象方法,但是可以具有多个默认方法。
Java 8中引入了默认方法,以添加新方法进行接口,而不会干扰已实现的类。
interface DefaultInterfaceTest{void show();default void display(){System.out.println("Default method from interface can have body..!");}
}
public class DefaultInterfaceTestImpl implements DefaultInterfaceTest{public void show(){System.out.println("show method");}//we dont need to provide any implementation to default method.public static void main(String[] args){DefaultInterfaceTest obj = new DefaultInterfaceTestImpl();obj.show();//out puts: show methodobj.display();//outputs : Default method from interface can have body..!}
}
默认方法的主要用途是不强制实现类,我们可以向接口添加方法。
多重继承:
如果两个接口中存在相同的默认方法,并且一个类正在实现该接口,则它将引发错误。
//Normal interface with show methodinterface Test{default void show(){System.out.println("show from Test");}}//Another interface with same show methodinterface AnotherTest{default void show(){System.out.println("show from Test");}}//Main class to implement above two interfacesclass Main implements Test, AnotherTest{
//here is an ambiguity which show method has to inherit here
}
此类不会编译,因为Test和AnotherTest接口show()方法之间存在歧义,要解决此问题,我们需要将Show()方法覆盖到Main Class。
class Main implements Test, AnotherTest{void show(){System.out.println("Main show method");}}
翻译自: https://www.javacodegeeks.com/2014/05/java-8-functional-interface-example.html
java请求接口示例
java请求接口示例_Java 8:功能接口示例相关推荐
- java组合与继承始示例_Java 9功能与示例
java组合与继承始示例 Java 9 is a major release and it has brought us a lot of features for developers. In th ...
- java组合与继承始示例_Java 8特性与示例
java组合与继承始示例 Java 8 was released on 18th March 2014, so it's high time to look into Java 8 Features. ...
- java支持接口吗_java – 支持专用接口方法
此支持允许接口的非抽象方法在它们之间共享代码.私有方法可以是静态的或实例的. 接口的私有方法可以是抽象的还是默认的? 我可以问一个例子,"私有静态接口方法"在代码方面是否有用? 解 ...
- java枚举类型原理_Java枚举类接口实例原理解析
这篇文章主要介绍了Java枚举类接口实例原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 枚举类可以实现一个或多个接口.与普通类实现接口完全一 ...
- java 接口对象_Java面向对象之接口——interface
Java面向对象之接口--interface 什么是接口 一般计算机中的接口分为硬件接口和软件接口. 硬件接口:是指两个硬件设备之间的连接方式,既包括物理上的接口,还包括逻辑上的数据传送协议. 软件接 ...
- java接口常用_java的常用接口
Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements). 所有实现Collection接口的类 ...
- java 子类必须实现_Java学习之接口的子类必须实现接口的全部方法吗?
接口的子类必须实现接口的全部方法吗? 接口的子类必须实现接口中全部的方法吗?答案:不是.原因如下: 如果子类是非抽象类,则必须实现接口中的所有方法: 如果子类是抽象类,则可以不实现接口中的所有方法,因 ...
- java 接口重写_java如何实现接口中的重写
普通类implements接口 1.普通方法,抽象方法都得重写: 2.默认方法可重写,也可不重写. 抽象类implements接口 在线视频教程分享:java教学视频 由抽象类来实现接口,则不必重写接 ...
- Java抽象类和接口使用_Java 抽象类和接口
一.抽象类 1.定义 抽象类指提供方法,但是未提供方法体(实现方法)的类,抽象类用来被子类继承,子类通过方法的重写实现抽象方法. 注:1)抽象类中不一定包含抽象类,它可能只是abstract修饰的类: ...
- java 内部类声明 抽象类_Java 抽象类、接口、内部类
抽象类 当编写一个类时,常常会为该类定义一些方法,这些方法用以描述该类的行为方式,那么这些方法都有具体的方法体.但在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确地知道这些子类如何实 ...
最新文章
- unity3d v5.1.1 ugui 带垂直滚动条的文本框
- codeforces gym-101745 D-Stamp Stamp Stamp动态规划
- Extjs中三种不同的数据提交方式
- 软考网络管理员学习笔记7之第七章网络管理技术
- vue 项目中当访问路由不存在的时候默认访问404页面
- 微信小程序和百度的语音识别接口详解
- 如何在无显示器的ubuntu下跑前端测试
- Oracle 10g宝典(第2版)
- 对于机器学习而言如何翻越测试集
- 【16年浙江省赛H ZOJ 3965】Binary Tree Restoring 【两个dfs序还原】
- 快速突破面试算法之数组与矩阵篇
- 深信服环境SCSA环境遇到的问题(无法访问网站)
- matlab中除法的错误使用
- 【电脑运用及修理】6套台式组装机电脑配置清单大全(2022年618)
- 教你用冰点还原批量处理文件
- 【数据结构与算法】之深入解析“滑动谜题”的求解思路与算法示例
- 婚纱预订小程序开发,商家线上展示平台
- STM32 GPIOx_CRL/GPIOx_CRH 寄存器的设置的简化描述
- python爬虫天猫商品数据及分析(2)
- 近期1年来PHP面试题整理
热门文章
- 【2018.3.31】模拟赛之四-ssl2408 句子【dp,字符串】
- 【双指针】Square Pasture G(P7153)
- 【SPFA】最优贸易(luogu 1073)
- 【最短路】【Dijkstra】【图论】最小花费(jzoj 2125)
- Maven的pom.xml文件详解------Build Settings
- Hadoop入门(十二)Intellij IDEA远程向hadoop集群提交mapreduce作业
- 漫画:如何用栈实现队列
- 机器学习中向量化编程总结记录
- (归并排序 快排 堆)
- 虚拟机安装CentOS-7-x86_64-DVD-1708说明