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> ;

 무효 수락 (T t, U u);

두 개의 입력 매개 변수를 받아들이고 결과를 반환하지 않는 작업을 나타냅니다.
2

BiFunction <T, U, R> ;

  R 적용 (T t, U u);

두 개의 입력 매개 변수를 받아들이고 결과를 반환하는 메서드를 나타냅니다.

BinaryOperator <T> ;

继承 BiFunction <T, U, R> ;

동일한 유형의 두 연산자에 대해 작동하는 작업을 나타내며 동일한 유형의 연산자의 결과를 반환합니다.
4

BiPredicate <T, U> ;

 부울 테스트 (T t, U u);

두 매개 변수 반환 부울 ​​값 메서드를 나타냅니다.
5 BooleanSupplier 부울 값 결과의 공급자를 나타냅니다.

6

소비자 <T> ;

  무효 수락 (T t);

입력 매개 변수를 받아들이고 반환하지 않는 작업을 나타냅니다.
7

DoubleBinaryOperator ;

 double applyAsDouble (왼쪽 이중, 오른쪽 이중);

두 개의 이중 값 연산자의 연산을 나타내며 이중 값 결과를 반환합니다.
8

DoubleConsumer ;

 void accept (double value);

이중 값 매개 변수를 받아들이고 결과를 반환하지 않는 작업을 나타냅니다.
9

DoubleFunction <R> ;

  R 적용 (이중 값);

이중 값 매개 변수를 받아들이고 결과를 반환하는 메서드를 나타냅니다.
10

DoublePredicate ;

부울 테스트 (이중 값);

이중 값 매개 변수가있는 부울 리턴 메소드를 나타냅니다.
11

DoubleSupplier ;

 double getAsDouble ();

매개 변수없이 double 값을 반환하는 메서드를 나타냅니다.
12

DoubleToIntFunction ;

 int applyAsInt (이중 값);

이중 유형 입력을 수락하고 int 유형 결과를 반환합니다.
13

DoubleToLongFunction ;

 long applyAsLong (이중 값);

이중 유형 입력을 수락하고 긴 유형 결과를 반환합니다.
14

DoubleUnaryOperator ;

double applyAsDouble (이중 피연산자);

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 값);

입력 매개 변수를 받아들이고 int 유형 결과를 반환합니다.
41

ToLongBiFunction <T, U> ;

  long applyAsLong (T t, U u);

두 개의 입력 매개 변수를 허용하고 긴 유형 결과를 리턴합니다.
42

ToLongFunction <T> ;

  long applyAsLong (T 값);

입력 매개 변수를 허용하고 긴 유형 결과를 리턴합니다.
43

UnaryOperator <T> ;

继承 : Function <T, T> 확장 ;

 R 적용 (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