53java 内建函数式接口

79 阅读1分钟

内建函数式接口

一、函数式接口分类

Lambda语法实际上简化为了方法引用,但是Lambda核心在于函数式接口,而函数式接口的核心只有一个方法。

 

在函数式编程里面只需要有四类接口(Java.util,function):

  • 功能性函数接口:

public interface Function<T,R> {public R apply(T t);};

  • 供给型函数式接口:

Interface Supplier {public T get();}

  • 消费型函数式接口:

public interface Consumer {public void accept(T t);};;

 

  • 断言型函数式接口:

public interface Predicate {Boolean test(T t);}

 

  • 函数式接口范例

范例:使用功能型接口(String.valueof())

功能型指的是输入一个数据,将数据处理后再进行输出。实际上所有的函数式接口里面都会有一些小的扩展,

例如:

如果现在确定操作的数据是int,则可以使用IntFunction接口。

    package cn.mldn.demo;

import java.util. function.Function;

public class TestDemo {

public static void main(String[] args) {

Function<Integer, String>fun = string: :valueof;

System. out .println(fun. apply(1000));

}

}

范例:扩展的Function接口

    package cn.mldn.demo;

import java.util. function.Function;

public class TestDemo {

public static void main(String[] args) {

Function<Integer, String>fun = string: :valueof;

System. out .println(fun. apply(1000));

}

}

范例:消费型接口(System.out.println)

    package cn . mldn. demo;

import java.utilfunction.Consumer;

public class TestDemo {

public static void main(String[] args) {

Consumer<String> cons = System.out :: println ;

cons. accept("Hello World !");

}

}

范例:供给型接口(“hello”.toUpperCase())

    package cn.mldn.demo;

import java.util.function.Supplier;

public class TestDemo {

public static void main(String[] args) {

Supplier<String> sup = "hello":: toUpperCase ;

System.out.println(sup. get());

}

}

范例:断言型函数接口(isEmpty)

    package cn.mldn.demo ;

import java . util . function.Predicate;

public class TestDemo {

public static void main(String[] args) {

Predicate<String> pre =" ##hello"::startswith ;

System.outprintln(pre.test("##"));

}

}

 

如果要进行复杂的Lambda运算,就需要利用这类的函数式接口进行操作