java8新增特征(二)-函数式接口(Functional)

java8新增特性(二)----函数式接口(Functional)

     上一篇博客介绍了java8新增的Lambda表达式,这一节介绍一下java8的函数式编程,两者之间有什么联系呢?请往下看~~~

     Lambda表达式如何在java类型中表示的呢?

     语言设计者投入了大量的精力来思考如何使现有的函数友好地支持lambda。最终采取的办法是:增加函数式接口的概念,函数式接口接口就是具有一个方法的普通接口。像这样的

接口可以被隐式的转换为Lambda表达式!!!

     每一个Lambda表达式都对应一个 类型,通常是接口类型。而“函数式接口”是指仅仅包含一个抽象方法的接口,每一个该类型的lambda表达式都会被匹配到这个抽象方法。

因为默认方法不算抽象方法,所以你也可以给你的函数式接口添加默认方法!!。。

     我们可以把Lambda表达式当作任意一个抽象方法的接口类型,你的接口达到这个要求,你只需要给你的接口添加@FunctionalInterface注解,编译器如果发现你标注了这个注解的接口有多于一个接口的时候会报错!!!!

看一下下面函数式编程的例子:

package com.panther.dong.java8.functional;

/**
 * Created by panther on 15-8-22.
 */
public class FunctionTest {
    public static void main(String[] args) {
        Converter<String, Integer> converter = (from) -> Integer.parseInt(from);
        Integer integer = converter.convert("231");
        System.out.println(integer);
    }
}

@FunctionalInterface
interface Converter<F, T> {
    T convert(F from);
}

运行结果:

231

  注意:接口中的默认方法和静态方法并不会影响函数式接口的规定,可以任意使用,但是普通方法只能有一个

版权声明:本文为博主原创文章,未经博主允许不得转载。