jdk1.8 새로운 기능 - Lambda 표현식 및 함수 인터페이스
Lambda 표현식
자바 집합에서forEach 방법으로 집합을 옮겨다니면 jdk1이 사용됩니다.8의 새로운 기능: Lambda 표현식과 함수 인터페이스
먼저 forEach 방법의 원본 코드를 보십시오:
default void forEach(Consumer<? super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}
방법 원본에서 알 수 있듯이forEach 방법은 Iterable 인터페이스(java.lang)의 기본적인 방법이다. 이 방법은 함수식 인터페이스인 Consumer를 매개 변수로 수신한다. Consumer 인터페이스는 4대 함수식 인터페이스 중 하나로 소비형 인터페이스에 속한다. 이 인터페이스의 유일한 추상적인 방법
void accept(T t);
방법은 매개 변수를 수신하지만 되돌아오는 값이 없다. 즉, 이 매개 변수를 소비하는 것으로 간단하게 이해할 수 있다.이 방법은 하나의 매개 변수를 수신한 후 출력 문구로 이 매개 변수의 값을 출력하는 데 많이 쓰인다.이 방법의 처리 논리는 집합 중의 모든 요소를Consumer 인터페이스의accept 방법으로 처리하는 논리입니다.//1.
List<Integer> list=new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
Consumer<Integer> consumer=new Consumer<Integer>() {
@Override
public void accept(Integer integer) {
System.out.println(integer);
}
};
list.forEach(consumer);
2.
List<Integer> list=new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.forEach(new Consumer<Integer>() {
@Override
public void accept(Integer integer) {
System.out.println(integer);
}
});
3.jdk1.8 Lambda
List<Integer> list=new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.forEach((Integer v)-> {System.out.println(v);});
Lambda 표현식에 대해서는 쓰기를 더욱 간소화할 수 있다. 만약에 방법체가 한 줄의 문장만 있다면 문장 뒤의 분호와 방법체의 대괄호를 생략할 수 있다. 만약에 이 문장이 리턴으로 되돌아온다면 리턴을 직접 생략할 수도 있다.주의해야 할 것은 일반적으로 생략하려면 함께 생략하고, 즉 분호, 대괄호,return 세 가지를 함께 생략하는 것이다.매개 변수의 경우 매개 변수의 유형을 생략할 수 있고, 매개 변수가 하나일 경우 매개 변수의 괄호를 생략할 수도 있다.
위의 Lambda 표현식에 대한 간단한 쓰기 방법은 다음과 같습니다.
list.forEach(v-> System.out.println(v));
4대 함수식 인터페이스
함수식 인터페이스는 인터페이스에 하나의 추상적인 방법만 포함하고 기본 방법과 정적 방법의 수량에 제한이 없는 인터페이스를 말한다.jdk1.8 이후 @FunctionalInterface 주석을 추가하여 함수식 인터페이스를 표시한다.모든 함수식 인터페이스는java에 있습니다.util.function 싸주세요.
R apply(T t);
이 방법은 매개 변수를 수신하고 값을 되돌려준다.예: Function<Integer, Integer> func = p -> p * 10; // 10
void accept(T t);
이 방법은 매개 변수를 수신하고 아무런 반환도 하지 않습니다Consumer<String> consumer= p -> System.out.println(p); // , 、
boolean test(T t);
이 추상적인 방법은 매개 변수를 수신하고 브리치Predicate<Integer> predicate = p -> p % 2 == 0; //
T get();
이 방법은 매개 변수를 받지 않지만 값을 되돌려줍니다Supplier<Integer> supplier= () -> 100;
jdk1.8의 기타 새로운 기능:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java1.8 4대 함수형 인터페이스, 실체류 필수 설명텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.