美文网首页
Java新特性-函数式接口

Java新特性-函数式接口

作者: Harper324 | 来源:发表于2019-03-04 14:36 被阅读0次

定义

函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。

语法:

@FunctionalInterface
public interface MyFunctionalInterface {
//抽象方法
    void abstractMethod();  
//默认方法
default void defaultMethod() { 
        //implement code
    }
//静态方法
    static void staticMethod() { 
        //implement code
    }
 //Object 中覆盖的方法,也就是 equals,toString,hashcode等方法。
    @Override
    boolean equals(Object obj); // java.lang.Object's public method
}

说明:

  1. 函数式接口里允许定义默认方法。 函数式接口里是可以包含默认方法,因为默认方法不是抽象方法,其有一个默认实现,所以是符合函数式接口的定义的;
  2. 函数式接口里允许定义静态方法。 函数式接口里是可以包含静态方法,因为静态方法不能是抽象方法,是一个已经实现了的方法,所以是符合函数式接口的定义的;
  3. 函数式接口里允许定义 java.lang.Object 里的 public 方法。函数式接口里是可以包含Object里的public方法,这些方法对于函数式接口来说,不被当成是抽象方法(虽然它们是抽象方法);因为任何一个函数式接口的实现,默认都继承了 Object 类,包含了来自 java.lang.Object 里对这些抽象方法的实现;

举个例子

//定义函数式接口
@FunctionalInterface
public interface MyFunction<T,F,R> {
    R myFunction(T t,F f);
}

//实现接口
public class MyFunctionDemo {
    public static void main(String[] args) {
        MyFunction<Integer,Integer,Integer> add=(a,b)-> (a+b);
        MyFunction<Integer,Integer,Integer> minus=(a,b)-> (a-b);
        MyFunction<Integer,Integer,Integer> multiply=(a,b)-> (a/b);
        MyFunction<Integer,Integer,Integer> divide=(a,b)-> (a*b);
        System.out.println(calculate(add,1,4));
        System.out.println(calculate(minus,6,4));
        System.out.println(calculate(multiply,1,4));
        System.out.println(calculate(divide,1,4));

    }
    public static Integer calculate(MyFunction<Integer,Integer,Integer> operation,Integer numberA,Integer numberB) {
        return operation.myFunction(numberA,numberB);
    }
}

//结果
5
2
0
4

相关文章

  • JAVA8函数式接口学习

    JAVA8函数式接口 函数式接口是java8的一种新特性,函数式接口定义了且只定义了一个抽象方法!该接口非常有用,...

  • 函数式接口

    函数式接口 声明:java8新特性系列为个人学习笔记,参考地址点击这里,侵删!! 函数式接口(Functional...

  • java 各版本新特性介绍

    java8 新特性 Java8 主要包括的新特性有: 函数式接口如果一个接口只有一个抽象方法,那么该接口就成为一个...

  • JAVA8新特性之函数式接口使用与学习

    函数式接口 函数式接口是Java8引用的一个新特性,是一种特殊的接口 SAM类型的接口(Single Abstra...

  • Lambda表达式

    Lambda表达式是Java8的一个新特性,是函数式接口的一种体现。所谓函数式接口(functional inte...

  • Java 8 新特性概述

    Java 8 新特性概述 转载自 唐学波, 林宝川, 和 俞顺杰 Java 8 新特性概述 1. 函数式接口 Ja...

  • Java新特性-函数式接口

    定义 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法...

  • Java 8 新特性 - 函数式接口 Functional In

    Java8的其中一个新特性,函数式接口。 什么是函数式接口?有且仅有一个抽象方法的接口(不包括默认方法、静态方法以...

  • lambda表达式

    概要: 函数式编程特性 lambda表达式语法及应用场景 Java 8自带函数式接口详解 一、函数式编程特性 1....

  • 《Java 8实战》学习总结

    Java 8新特性概览 Lambda表达式 流 默认方法 Lambda表达式 Lambda和函数式接口Java 8...

网友评论

      本文标题:Java新特性-函数式接口

      本文链接:https://www.haomeiwen.com/subject/uqhiuqtx.html