java8 -- 函数接口

java8 新特性  -- 函数接口

函数接口:一个接口,一个抽象方法,构成了函数接口,可以加注解@FunctionalInterface 

                   指定约束该接口为函数接口;函数接口只能有一个自己的抽象方法

简单使用:

自定义函数接口:  定义了三个函数接口

package com.xiaodu.java8.methodcite;

import java.util.function.Supplier;

/**
 * 定义函数接口
 * @author 84287
 *
 */
public interface FunctionInterface {
		
	
	/*
	 * 获取类的实例
	 */
	@FunctionalInterface
	interface function01<T>{
		 T getObject();
	}
	//函数接口是主要是给Lambda使用 java8中已经有好多函数接口,很多不用自己定义

      //本人自己定义的function01<t> 其实和 java.util.function中的Supplier<T>一样的

	
}

使用函数接口:

public static void main(String[] args) {
		
		function01<String> f01 = () -> "xiaoming";
		String string = f01.getObject();
		System.out.println(string.length());  // 8
	}

java 8 中自带的函数接口大全:

JDK 1.8之前已有的函数式接口:

·        java.lang.Runnable

·        java.util.concurrent.Callable

·        java.security.PrivilegedAction

·        java.util.Comparator

·        java.io.FileFilter

·        java.nio.file.PathMatcher

·        java.lang.reflect.InvocationHandler

·        java.beans.PropertyChangeListener

·        java.awt.event.ActionListener

·        javax.swing.event.ChangeListener
--------------------- 

java.util.function.* 下的函数接口

函数接口
序号 接口名 && 抽象方法 备注
1

BiConsumer<T,U>   ;

 void accept(T t, U u);

代表了一个接受两个输入参数的操作,并且不返回任何结果
2

BiFunction<T,U,R>;

  R apply(T t, U u);

代表了一个接受两个输入参数的方法,并且返回一个结果
3

BinaryOperator<T>;

继承BiFunction<T,U,R>;

代表了一个作用于于两个同类型操作符的操作,并且返回了操作符同类型的结果
4

BiPredicate<T,U>;

 boolean test(T t, U u);

代表了一个两个参数的返回boolean值方法
5 BooleanSupplier 代表了boolean值结果的提供方

6

Consumer<T>;

  void accept(T t);

代表了接受一个输入参数并且无返回的操作
7

DoubleBinaryOperator;

 double applyAsDouble(double left, double right);

代表了作用于两个double值操作符的操作,并且返回了一个double值的结果
8

DoubleConsumer;

 void accept(double value);

代表一个接受double值参数的操作,并且不返回结果
9

DoubleFunction<R>;

  R apply(double value);

代表接受一个double值参数的方法,并且返回结果
10

DoublePredicate;

boolean test(double value);

代表一个拥有double值参数的返回boolean值方法
11

DoubleSupplier;

 double getAsDouble();

代表一个无参,返回double值的方法
12

DoubleToIntFunction;

 int applyAsInt(double value);

接受一个double类型输入,返回一个int类型结果
13

DoubleToLongFunction;

 long applyAsLong(double value);

接受一个double类型输入,返回一个long类型结果
14

DoubleUnaryOperator;

double applyAsDouble(double operand);

接受一个参数同为类型double,返回值类型也为double。
15

Function<T,R>;

  R apply(T t);

接受一个输入参数,返回一个结果
16

IntBinaryOperator;

 int applyAsInt(int left, int right);

接受两个参数同为类型int,返回值类型也为int 
17

IntConsumer;

void accept(int value);

接受一个int类型的输入参数,无返回值
18

IntFunction<R>;

 R apply(int value);

接受一个int类型输入参数,返回一个结果
19

IntPredicate;

boolean test(int value);

接受一个int输入参数,返回一个布尔值的结果
20

IntSupplier;

int getAsInt();

无参数,返回一个int类型结果
21

IntToDoubleFunction;

 double applyAsDouble(int value);

接受一个int类型输入,返回一个double类型结果
22

IntToLongFunction;

  long applyAsLong(int value);

接受一个int类型输入,返回一个long类型结果
23

IntUnaryOperator;

 int applyAsInt(int operand);

接受一个参数同为类型int,返回值类型也为int 
24

LongBinaryOperator;

long applyAsLong(long left, long right);

接受两个参数同为类型long,返回值类型也为long
25

LongConsumer;

void accept(long value);

接受一个long类型的输入参数,无返回值
26

LongFunction<R>;

 void accept(long value);

接受一个long类型输入参数,返回一个结果
27

LongPredicate;

 boolean test(long value);

接受一个long输入参数,返回一个布尔值类型结果
28

LongSupplier;

long getAsLong();

无参数,返回一个结果long类型的值
29

LongToDoubleFunction;

 double applyAsDouble(long value);

接受一个long类型输入,返回一个double类型结果
30

LongToIntFunction;

int applyAsInt(long value);

接受一个long类型输入,返回一个int类型结果
31

LongUnaryOperator;

 long applyAsLong(long operand);

接受一个参数同为类型long,返回值类型也为long
32

ObjDoubleConsumer<T>;

 void accept(T t, double value);

接受一个object类型和一个double类型的输入参数,无返回值
33

ObjIntConsumer<T>;

  void accept(T t, int value);

接受一个object类型和一个int类型的输入参数,无返回值
34

ObjLongConsumer<T>;

  void accept(T t, long value);

接受一个object类型和一个long类型的输入参数,无返回值
35

Predicate<T>;

 boolean test(T t);

接受一个输入参数,返回一个布尔值结果
36

Supplier<T>;

T get();

无参数,返回一个结果
37

ToDoubleBiFunction<T,U>;

 double applyAsDouble(T t, U u);

接受两个输入参数,返回一个double类型结果
38

ToDoubleFunction<T>;

  double applyAsDouble(T value);

接受一个输入参数,返回一个double类型结果
39

ToIntBiFunction<T,U>;

 int applyAsInt(T t, U u);

接受两个输入参数,返回一个int类型结果
40

ToIntFunction<T>;

  int applyAsInt(T value);

接受一个输入参数,返回一个int类型结果
41

ToLongBiFunction<T,U>;

  long applyAsLong(T t, U u);

接受两个输入参数,返回一个long类型结果。
42

ToLongFunction<T>;

  long applyAsLong(T value);

接受一个输入参数,返回一个long类型结果
43

UnaryOperator<T>;

继承: extends Function<T, T>;

 R apply(T t);

接受一个参数为类型T,返回值类型也为T
44 以上是java8 之后又的函数接口

 

 

 

简单使用java8中自带的函数接口

代码体现:

使用java8自带的函数接口

	public static void main(String[] args) {
		
		String string = MethodCiteFunction.supplier(() -> "接受一个空参,返回一个String对象");
		System.out.println(string);
//		空参,返回一个person对象
		Person person = MethodCiteFunction.supplier(() -> new Person());
//		方法引用,空参返回一个person对象
		Person person2 = MethodCiteFunction.supplier(Person::new);
		
		
	}
	
	/**
	 * Supplier<T>  无参,返回一个泛型类型的对象
	 * @param supplier
	 * @return
	 */
	public static <T>T supplier(Supplier<T> supplier) {
		return  supplier.get();
	}

猜你喜欢

转载自blog.csdn.net/xiaodujava/article/details/84316944