文档章节

Java8新特性:函数式接口@FunctionalInterface使用说明

BakerZhu
 BakerZhu
发布于 2018/08/05 20:24
字数 415
阅读 532
收藏 1

我们常用的一些接口Callable,Runnable,Comparator等在JDK8中都添加了@FunctionalInterface 注解:

通过JDK8 源码javadoc,可以知道@FunctionalInterface有以下特点:

1.该注解只能标记在"有且仅有一个抽象方法"的接口上,表示函数式接口。
2.JDK8接口中的静态方法和默认方法,都不算是抽象方法。
3.接口默认继承 java.lang.Object,所以如果接口显示声明覆盖了Object中的方法,那么也不算抽象方法。
4.该注解不是必须的,如果一个接口符合"函数式编程"定义,那么加不加该注解都没有影响。加上该注解能够 更好地让编译器进行检查,如果编写的不是函数式接口,但是加上了@FunctionalInterface 那么编译器会报错。

下面接口可以单做一函数式接口:

package com.simple.java8features;

/**
 * Created with IntelliJ IDEA.
 *
 * @author: zhubo
 * @description:
 * @time: 2018年08月05日
 * @modifytime:
 */
@FunctionalInterface
public interface AnnoInterface {
    // 抽象方法
    public void method();
    // java.lang.Object中的方法不是抽象方法
    public boolean equals(Object obj);
    // default不是抽象方法
    public default void defaultMethod() {

    }
    // static 不是抽象方法
    public static void staticMethod() {

    }
}

GitHub

 

 

 

© 著作权归作者所有

BakerZhu
粉丝 109
博文 517
码字总数 423077
作品 0
通州
程序员
私信 提问
加载中

评论(0)

Java8新特性系列(Interface)

在Java8版本以前,Interface接口中所有的方法都是和,那么在Java8中,Interface有什么新特性呢? 静态成员 在Java8以前,我们要定义一些常量,一般会写一个类,类中都是的一些变量,如下: ...

码上论剑
2018/02/03
0
0
java8新特性(二)_lambda表达式

最近一直找java8相关新特性的文章,发现都太没有一个连贯性,毕竟大家写博客肯定都有自己的侧重点,这里找到一本书,专门介绍java8新特性的,感觉大家可以看看《写给大忙人看的JavaSE8》.这里...

阳光温暖
2018/08/04
0
0
一起来学Java8(一)——函数式编程

在这篇文章中,我们将了解到在Java8下如何进行函数式编程。 函数式编程 所谓的函数式编程就是把函数名字当做值进行传递,然后接收方拿到这个函数名进行调用。 首先来看下JavaScript如何进行函...

tanghc
2019/10/19
122
0
JAVA8新特性之:函数式接口

什么是函数式接口(Functional Interface) 所谓的函数式接口,当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法。 这种类型的接口也称为SAM接口,即Single Abstract Method ...

落叶追风
2016/12/07
81
0
函数式接口简介 ---- 一个在Java8中重建的概念

函数式接口简介 ---- 一个在Java8中重建的概念 世界上任何一个Java开发者都用过下面这些接口中的至少一个:java.lang.Runnable, java.awt.event.ActionListener, java.util.Comparator, java...

CasparLi
2016/09/23
58
0

没有更多内容

加载失败,请刷新页面

加载更多

Ruby,exec,system和%x()或Backticks之间的区别

以下Ruby方法有什么区别? exec , system和%x()或反引号 我知道它们用于通过Ruby以编程方式执行终端命令,但我想知道为什么有三种不同的方法可以做到这一点。 #1楼 系统 system方法调用系统...

技术盛宴
19分钟前
54
0
UPX 压缩最终文件的尝试

来源 https://github.com/upx/upx UPX 命令详解 以下命令源于UPX 3.96 用法 upx [-123456789dlthVL] [-qvfk] [-o file] file... 命令 -1 快速压缩-9 更好压缩-d 解压缩-l 压...

神秘的农夫
20分钟前
54
0
设计模式之单例模式

单例模式是各场景下常用的一种模式。 安全的double check的实现 注意点 构造函数为private修饰,不让外部直接调用创建类 两次if判断instance是否为空。第一层是为了判断如果instance存在直接...

Lubby
20分钟前
70
0
万能爬虫

公众号不让外部引用图片 剩下的都在星球更新,免费没人看

开飞色
24分钟前
57
0
学习01-html(新增语义化标签,多媒体标签,表单属性)

新增语义化标签 header 头部标签 nav 导航栏标签 article 内容标签 section 块级标签 aside 侧边栏标签 footer 尾部标签 多媒体标签 audio音频 三总音频格式 Ogg vorbis;Mp3;Wav; 属性 ...

宋_
24分钟前
46
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部