文档章节

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

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

我们常用的一些接口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以及函数式编程 关注公众号(CoderBuff)回复“stream”获取《Java8 Stream编码实战》PDF完整版。 《Java8 Stream编码实战》的代码全部在https://github.com/yu-linfeng/Blo...

OKevin
03/23
0
0
java8新特性(二)_lambda表达式

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

阳光温暖
2018/08/04
0
0
java8 注解: @FunctionalInterface (函数式接口)

Java8提倡函数式编程,因而新增了一个函数式接口。函数式接口保证了函数式编程,同时也保证了能够兼容以前的java版本。 函数式接口的定义 在java8中,满足下面任意一个条件的接口都是函数式接...

微风--轻许--
2019/12/11
0
0
一起来学Java8(一)——函数式编程

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

tanghc
2019/10/19
130
0

没有更多内容

加载失败,请刷新页面

加载更多

超实用企业级搜索引擎_Elasticsearch(二)基于RESTFul Api操作

Elasticsearch(二)基于RESTFul Api操作 想要进行API操作,必须安装好Elasticsearch,如果没安装的,可以参考上篇去操作一波,再来学习API操作噢! Elasticsearch的 API,我们可以不用每个API语法啥...

煌sir
29分钟前
31
0
版本控制git的简单使用

0.第一次使用时配置: git config --global user.name "your_name" git config --global user.email "your_name@domain.com" 用的最多的: (查看当前git状态) git status 1.初始化: ......

baowang123
43分钟前
16
0
定时器Timer和TimerTask

为什么要使用定时器呢? 比如说一个web应用,如果这个应用规模很大,那它的日志数据是不是很多。如果一直存下来服务器的存储量怕是不行吧,需要隔一段时间删除,那么就需要一个线程每隔一段时...

南柯好萌
今天
18
0
深圳创服机构创成汇投融资对接指南

深圳创服机构创成汇投融资对接指南 一线城市一直是许多创业者创业热土,深圳也不例外,作为发达城市,科技是深圳的标志,也是许多科技创业者向往之地,科技创业者在创业前期面临许多难题,其...

cchlin
今天
35
0
egg学习笔记第六天:使用中间件屏蔽可疑用户

站点有时候想屏蔽一些特定频繁抓取服务器数据的用户,可以放在中间件中去做,用户在指定Ip数组内,则屏蔽,如果不在,则匹配路由规则执行controller。 中间件的概念: 匹配路由前,匹配路由完...

一生懸命吧
今天
34
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部