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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值