jdk 8 함수 인터페이스의 기능

2461 단어 jdk8

JKD8 학습


함수 인터페이스란 무엇입니까?

  • 있고 추상적인 방법만 있을 수 있다
  • @functionalInterface 주석을 추가했습니다
  • funcationalInterface를 추가하지 않으면 추상적인 방법 하나만 충족시키고 jdk8은 함수식 인터페이스로 여겨진다

  • 기능 인터페이스

    @FunctionalInterface
    public interface Function {
    
        /**
         * Applies this function to the given argument.
         *
         * @param t the function argument
         * @return the function result
         */
        R apply(T t);
      
       default  Function compose(Function super V, ? extends T> before) {
            Objects.requireNonNull(before);
            return (V v) -> apply(before.apply(v));
        }
    
    
        default  Function andThen(Function super R, ? extends V> after) {
            Objects.requireNonNull(after);
            return (T t) -> after.apply(apply(t));
        }
    
  • R apply(T t); 매개 변수만 받아들인 다음 매개 변수를 되돌려줍니다
  • compose 방법

  • default Function compose(Function super V,?extends T>before) 방법은 전송된 이 함수 방법을 먼저 실행하고 함수 자체를 실행합니다
  • andThen

  • default Function and Then(Function super R,?extends V>after) 방법은 함수 자체를 먼저 실행하고 전송된 function 함수를 실행하는 것이compose 방법과 정반대이다
    코드 예제는 다음과 같습니다.
    public class FunctionTest {
    
    	public static void main(String[] args) {
    		FunctionTest test1 = new FunctionTest();
    		System.out.println(test1.compute1(2, value-> value * 3, value -> value * value));
    		System.out.println(test1.compute2(2, value-> value * 3, value -> value * value));
    	}
    
    	
    	
    	public int compute1(Integer a, Function func1,Function func2) {
    		return func1.compose(func2).apply(a);
    		
    	}
    	public int compute2(Integer a, Function func1,Function func2) {
    		return func1.andThen(func2).apply(a);
    		
    	}
    }
    
    
    12
    36
    
  • Bifuncation은 두 개의 매개 변수를 전달할 수 있다
  • 	public int compute3(Integer a, Integer b,BiFunction func2) {
    		return func2.apply(a, b);
    		
    	}
    	System.out.println(test1.compute3(2,  3, (value,value2) -> value * value2));
    

    Bifuncation은 하나뿐이고andThen 방법은compose 방법이 없습니다. 왜냐하면compose 방법은 전송 함수 자체가 실행된 후에 하나의 값이기 때문입니다.그러면 이런 방법은 function의compose방법과 같다.그도 Bifunction의 apply 방법을 사용할 수 없습니다. 왜냐하면 이 방법은 두 개의 입참이 필요하기 때문입니다. 그러면 Bifunction에 왜andThen이 있을까요?왜냐하면 andthen 방법은 함수 자체의 apply (r, u, t) 를 호출한 후에 하나의 값으로 인해function 함수를 호출할 수 있기 때문이다

    좋은 웹페이지 즐겨찾기