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 인터페이스 용법 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 에 게 참고 가 될 수 있 고 여러분 의 많은 성원 을 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 8 의 함수 식 프로 그래 밍 Function 인터페이스 용법이 인터페이스의 유일한 추상 류 는 apply 방법 으로 하나의 유형의 매개 변 수 를 받 아들 이 고 반환 값 이 있 습 니 다.기능 은 매개 변 수 를 해당 하 는 방법 에 부여 하 는 것 입 니 다. 이 방법 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.