Java8新特性(一)------函数式编程

原创 2016年05月30日 15:50:30

 Ø  基本概念

  理解FunctionalInterface(函数式接口,以下简称FI)是学习Java8 Lambda表达式的关键所在。FI的定义其实很简单:任何接口,如果只包含唯一 一个抽象方法,那么它就是一个FI。为了让编译器帮助我们确保一个接口满足FI的要求(也就是说有且仅有一个抽象方法),Java8提供了@FunctionalInterface注解。

  对于方法的引用,严格来讲都是需要定义一个接口,可是不管如何进行操作,实际上有可能里面提供了一个包:     java.util.function,主要提供以下四种核心接口:

  1.      功能性接口(function): public interface Function<T,R>{public R apply(T t);}

     ------此接口接收一个参数,返回一个处理结果

  2.      消费性接口(consumer): public interface Consumer<T>{public void accept(T t);}

     ------此接口只是接收数据,不返回处理结果

  3.  供给性接口(Supplier):publicinterface Supplier<T>{public T get();}

     ------此接口不接受参数,但是返回处理结果

  4.  断言性接口(Predicate):publicinterface Predicate<T>{public boolean test(T t);}

     ------此接口用于进行判断操作使用

 Ø  实战

  具体的使用示例:

  功能性接口

  接口参数并且返回处理结果

 /**
         * 功能性接口
         */
        Function<String,Boolean> fun="##hello"::startsWith;   //表示方法中的参数
        System.out.println(fun.apply("##"));

  消费性接口

  接口只是接口参数,并不返回处理结果

   /**
         * 消费性接口
         */
        Consumer<String> cons=System.out :: println;
        cons.accept("Hello World");

  供给性接口

 /**
         * 供给型接口
         */
        Supplier<String> sup="hello"::toUpperCase;
        System.out.println(sup.get());

  断言性接口

        /**
         * 断言性接口
         */
        Predicate<String> pre="hello"::equalsIgnoreCase;
        System.out.println(pre.test("Hello"));

  上面的采用的是函数式接口进行实现的,如果你想把接受一些输入参数并将对输入参数处理过后的结果返回的功能封装到一个方法内,Function接口是一个不错的选择。输入的参数类型和输出的结果类型可以一致或者不一致。具体结果可以试试输出结果看看。

  以上四种接口的实现采用的都是方法引用(Method References),也就是一个简单的方法调用而已,也是lambda表达式的一种简化写法。理解了这些再来理解下面说的lambda表达式的话,可能会更加好理解性。

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

java 8 部分新特性和函数式编程

1.接口可以添加非抽象的方法,使用关键字 default 即可 代码如下:public interface Ijava8 { void getName(String name); de...

java8新特性——函数式编程(stream/map)

今天看代码,发现部分字符串处理使用的是jdk8的新特性,非常简洁。从网上找了教程,方便以后编程使用。 package com.mavsplus.java8.turtorial.streams...

java8新特性 函数式编程 Lamda

简介 函数式编程核心:以处理数据的方式处理代码。 相比较命令式编程的优点: 1. 代码更加简洁优雅,效率更高  2. 避免了对变量的显式修改和赋值  3. 函数式风格的代码可...

java8函数式编程

  • 2017年11月01日 12:37
  • 11.72MB
  • 下载

Java 8函数式编程 范例

  • 2017年10月12日 17:56
  • 383KB
  • 下载

关于Java8函数式编程你需要了解的几点

函数式编程与面向对象的设计方法在思路和手段上都各有千秋,在这里,我将简要介绍一下函数式编程与面向对象相比的一些特点和差异。...
  • xinaij
  • xinaij
  • 2016年03月31日 22:52
  • 765

Java8函数式编程PDF

  • 2017年08月27日 13:54
  • 11.66MB
  • 下载

java 8 函数式编程 (源码)

  • 2016年04月17日 00:12
  • 382KB
  • 下载

Java8函数式编程之七:Stream(流)的各种操作

上篇博客对流的基础知识进行了介绍,本篇博客将着重介绍关于流的各种操作,使用很多的实例代码,你只需要将其放进你的main函数中就能运行。—————————————— 创建流:public class ...

Java 8函数式编程

  • 2017年04月24日 14:23
  • 11.58MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java8新特性(一)------函数式编程
举报原因:
原因补充:

(最多只允许输入30个字)