我们常用的一些接口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() {

}

}

java8 interface_Java8新特性:函数式接口@FunctionalInterface使用说明相关推荐

  1. 学习笔记之-java8的新特性-函数式接口,lambda表达式,方法引用,Stream API,Optional类

    1.Lambda表达式 用匿名内部类的方法去创建多线程1.new Thread2.参数传递new Runnable3.重写run方法4.在run方法中去设置线程任务5.调用start问题:我们最终目标 ...

  2. java8新特性_乐字节-Java8新特性-函数式接口

    上一篇小乐带大家学过 Java8新特性-Lambda表达式,那什么时候可以使用Lambda?通常Lambda表达式是用在函数式接口上使用的.从Java8开始引入了函数式接口,其说明比较简单:函数式接口 ...

  3. JDK8中的新特性——函数式接口

    JDK8 简介 概述 Java 8由Oracle从2014年3月18日发布,此版本是自Java 5(发布于2004年)之后的一个重量级版本,也是java发展史上的一个里程碑式的版本.这个版本在JVM. ...

  4. java新特性-函数式接口-作为方法参数-作为方法的返回值-常用函数式接口-Supplier-Consumer-Predicate-Function

    文章目录 函数式接口 概念 函数式接口作为方法参数 函数式接口作为方法的返回值 常用函数式接口 Supplier接口 常用函数式接口 Consumer 函数式接口之 Predicate接口 常用接口之 ...

  5. JDK8新特性:函数式接口@FunctionalInterface的使用说明

    我们常用的一些接口Callable.Runnable.Comparator等在JDK8中都添加了@FunctionalInterface注解. 通过JDK8源码javadoc,可以知道这个注解有以下特 ...

  6. JAVA8的新特性之函数式接口

    JAVA8的新特性之函数式接口 1.Lambda表达式使用的前提,就是接口必须是一个函数式接口 2.定义 在接口中,只有一个抽象方法 3.检查是否是函数式接口用的注解 @FunctionalInter ...

  7. java8:新特性及Lamber表达式语法及四大函数接口

    java8:新特性及Lamber表达式 如果左侧只有一个参数可以省略括号,如果右侧只有一个表达式可以省略括号 如果左侧有一个参数也可以添加括号,可以不写参数类型,有类型推断 如果右侧有返回值,一个表达 ...

  8. 对于Java8的新特性,应该了解(掌握)的哪些

    Java8的新特性 一.Lambda表达式 基本的使用方式 Lambda表达式的使用:6种情况 语法格式一:无参,无返回值 语法格式二:Lambda表达式需要一个参数,但是没有返回值 语法格式三:数据 ...

  9. 深圳Java培训学习:Java8.0新特性之Lambda表达式--【千锋】

    深圳Java培训学习:Java8.0新特性之Lambda表达式–[千锋] 前言 Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级.本篇文章,主要给大家介绍的是lambda表 ...

最新文章

  1. 真香!20张图揭开「队列」的迷雾,一目了然
  2. [转]获取机器的硬件信息(CPU ID序列号, 主板信息,硬盘序列号,系统信息)
  3. 开篇第一章简要IOT技术栈分析
  4. 使用Nginx+Lua(OpenResty)开发高性能Web应用
  5. 如何制作自己的静态库
  6. 阿里云服务器ECS选型
  7. AndroidStudio_开发工具的设置_代码编辑器使用_新特性---Android原生开发工作笔记73
  8. 机器学习与计算机视觉(数据集的选择)
  9. python程序员月薪-据说做Python程序员,都月薪上万?
  10. java “lambda expressions not supported at this language level“
  11. 蓝桥杯.奇妙的数字(暴力)
  12. Java基础面试题(2022最新版汇总)
  13. matlab保存pdf图片太大,matlab中的图片保存方法精选.pdf
  14. execute和submit的区别
  15. 阿里巴巴CTO行癫:阿里双11是世界互联网技术的超级工程
  16. 孩子立刻就不玩游戏了,因为他找到更好玩的东西!
  17. 冻成鸡爪了,冬天的鱼儿狡猾的干活
  18. 生存战争2.2联机版游戏介绍
  19. 利用JS事件让你更加愉快地划水
  20. Servlet--转发和重定向

热门文章

  1. 自称比特币创造者中本聪,如今这人被法官怒怼作伪证!
  2. 300 秒带你吃透大数据!
  3. 一位程序员 8 年的物联网奋斗史
  4. Java 面试如何坐等 offer?
  5. AI 垃圾分类指日可待?
  6. 鸿蒙操作系统用的微内核到底是什么?
  7. @程序员,不容错过的 Vim 实用技巧请查收!
  8. 我为什么放弃了 Chrome?
  9. 携程否认竞价排名;戴尔为“吃鸡外挂”致歉;腾讯将发区块链游戏 | CSDN极客头条
  10. 没了乔布斯,iOS 的 Bug 更多了,更新更频繁了