JAVA 8 의 함수 식 프로 그래 밍 Function 인터페이스 용법

이 장 에서 부터 자주 사용 하 는 함수 식 인터페이스 도 구 를 소개 합 니 다.먼저 이 대가족 을 살 펴 보 겠 습 니 다.

먼저 Function 인터페이스 부터 소개 해 드 리 겠 습 니 다.
개술
이 인 터 페 이 스 는 말 그대로 함수 의 뜻 은 수학 과 같 습 니 다.매개 변 수 를 정 하고 결 과 를 되 돌려 줍 니 다.이 방법 은 다음 과 같 습 니 다.

package java.util.function;
import java.util.Objects;
 
@FunctionalInterface
public interface Function<T, R> {
 
 R apply(T t);
 
 default <V> Function<V, R> compose(Function<? super V, ? extends T> before) {
  Objects.requireNonNull(before);
  return (V v) -> apply(before.apply(v));
 }
 
 default <V> Function<T, V> andThen(Function<? super R, ? extends V> after) {
  Objects.requireNonNull(after);
  return (T t) -> after.apply(apply(t));
 }
 
 static <T> Function<T, T> identity() {
  return t -> t;
 }
1.apply 방법
이 인터페이스의 유일한 추상 류 는 apply 방법 으로 하나의 유형의 매개 변 수 를 받 아들 이 고 반환 값 이 있 습 니 다.기능 은 매개 변 수 를 해당 하 는 방법 에 부여 하 는 것 입 니 다.
2.compose 방법
기본 방법 은 apply 방법 을 사용 한 다음 호출 자로 apply 방법 을 호출 합 니 다.호출 된 Object.requireNonNull 은 자바 7 의 새로운 기능 입 니 다.before 가 null 값 이 라면 이상 을 직접 던 집 니 다.
3.and Then 방법
기본 적 인 방법 은 copose 방법 과 달리 먼저 호출 자 를 이용 하여 apply 방법 을 호출 한 다음 에 입 참 으로 apply 방법 을 호출 합 니 다.
4.idenity 방법
정적 방법,자바 8 의 새로운 기능,현재 실행 중인 방법 을 되 돌려 줍 니 다.
예시
첫 번 째 방법 을 제외 하고 다른 세 가지 방법의 반환 값 은 모두 Function 이기 때문에 뒤의 세 가지 방법 은 체인 호출(즉,"."방법 으로)할 수 있 습 니 다.예 를 들 어 건축 자 모델(Build)과 같 습 니 다.이론 이 끝나 면 상기 코드:

package com.yczuoxin.demo; 
import java.util.function.Function; 
public class FunctionTest {
 public static void main(String[] args) {
  //      
  Function<Integer, Integer> funcDouble = (n) -> n * 2;
  Function<Integer, Integer> funcPlus2 = (n) -> n + 2;
 
  System.out.println(funcDouble.apply(3));
  System.out.println(funcPlus2.apply(3));
 
  System.out.println(funcDouble.andThen(funcPlus2).apply(3));
  System.out.println(funcDouble.compose(funcPlus2).apply(3));
  System.out.println(Function.identity().compose(funcDouble).apply(8));
 }
}
실행 결과:

계산 과정 도 적 으 면 집행 순 서 를 알 수 있 겠 지.
총화
이 도구 류 의 느낌 은 수학 을 배 우 는 장면 으로 돌아 가 스스로 함 수 를 규정 한 다음 에 함 수 를 호출 하 는 것 이다.사실은 앤 더 슨 방법 을 한 번 호출 할 수 있 을 뿐만 아니 라 뒤에 덧 붙 일 수 있다.단지 쓰 지 않 았 을 뿐 이 니 여러분 이 직접 시도 해 보 세 요.
JAVA 8 의 함수 식 프로 그래 밍 Predicate 인터페이스
개술
이 인터페이스의 원본 코드 를 먼저 입력 하 십시오:

package java.util.function; 
import java.util.Objects; 
@FunctionalInterface
public interface Predicate<T> {
 
 boolean test(T t);
 
 default Predicate<T> and(Predicate<? super T> other) {
  Objects.requireNonNull(other);
  return (t) -> test(t) && other.test(t);
 }
 
 default Predicate<T> negate() {
  return (t) -> !test(t);
 }
 
 default Predicate<T> or(Predicate<? super T> other) {
  Objects.requireNonNull(other);
  return (t) -> test(t) || other.test(t);
 }
 
 static <T> Predicate<T> isEqual(Object targetRef) {
  return (null == targetRef)
    ? Objects::isNull
    : object -> targetRef.equals(object);
 }
}
1.test 방법
이 방법 은 입력 형식 을 받 아들 여 불 값 을 되 돌려 주 는 것 입 니 다.이 방법 은 판단 에 적 용 됩 니 다.
2.and 방법,or 방법
이 방법 은 하나의 Predicate 형식 매개 변 수 를 받 아들 이 고 돌아 오 는 것 도 하나의 Predicate 유형 입 니 다.and 방법 은 두 가지 판단 이 모두 성립 되 었 는 지,관계 형 연산 자"&"와 비슷 합 니 다.or 방법 은 두 가지 판단 에 사 용 됩 니 다.관계 형 연산 자"|"과 비슷 합 니 다.
3.negate 방법
이 방법 은 인자 가 들 어 오지 않 았 습 니 다.Predicate 형식 을 되 돌려 줍 니 다.이 방법 은 판단 을 반대 하 는 데 사 용 됩 니 다.관계 형 클 라 우 드 알고리즘 과"!"비슷 하 다
4.isEqual 방법
이 방법 은 Object 대상 을 받 아들 여 Predicate 형식 을 되 돌려 줍 니 다.이 방법 은 첫 번 째 test 방법 이 두 번 째 test 방법 과 같다 고 판단 하 는 데 사 용 됩 니 다(equal).
예시
판단 문자열 을 작성 하 는 판단 도구 클래스 입 니 다.Predicate 4 가지 방법 을 포함 하고 판단 결 과 를 되 돌려 줍 니 다.

package com.yczuoxin.demo.predicate; 
import java.util.function.Predicate; 
public class PredicateUtil {
 public static boolean judgeString(String str, Predicate<String> p){
  if(null == str){
   return false;
  }
  return p.test(str);
 }
 
 public static boolean judgeNoString(String str, Predicate<String> p){
  if(null == str){
   return false;
  }
  return p.negate().test(str);
 }
 
 public static boolean judgeAndDoubleString(String str, Predicate<String> p1, Predicate<String> p2){
  if(null == str){
   return false;
  }
  return p1.and(p2).test(str);
 }
 
 public static boolean judgeOrDoubleString(String str, Predicate<String> p1, Predicate<String> p2){
  if(null == str){
   return false;
  }
  return p1.or(p2).test(str);
 }
}
문자열 길이 가 4 보다 큰 지 시험 하 는 방법 용례:

package com.yczuoxin.demo.predicate; 
import java.util.function.Predicate; 
public class PredicateTest {
 public static void main(String[] args) {
  String testString = "abcde";
  //            4
  System.out.println(PredicateUtil.judgeString(testString,p->p.length()>4));
  //            4   
  System.out.println(PredicateUtil.judgeNoString(testString,p->p.length()>4));
  //            4    8
  System.out.println(PredicateUtil.judgeAndDoubleString(testString,p->p.length()>4,p->p.length()<8));
  //            4    8
  System.out.println(PredicateUtil.judgeOrDoubleString(testString,p->p.length()<4,p->p.length()>8));
  //          "test"  .
  System.out.println(Predicate.isEqual("test").test("test"));
  System.out.println(Predicate.isEqual("test").test("test1"));
 }
}
테스트 결과:

총화
Predicate 는 도구 류 와 조건 선별 조건 에서 사용 하기에 적합 하 며,if...else 의 사용 을 줄 이 고 유연 하 게 사용 할 수 있 습 니 다.
이상 의 JAVA 8 의 함수 식 프로 그래 밍 Function 인터페이스 용법 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 에 게 참고 가 될 수 있 고 여러분 의 많은 성원 을 바 랍 니 다.

좋은 웹페이지 즐겨찾기