자바 함수 식 인터페이스
자바 언어 디자이너 는 기 존의 함수 가 lambda 를 우호 적 으로 지원 하 는 방법 에 대해 많은 정력 을 기 울 였 다.최종 적 으로 취 하 는 방법 은 함수 식 인터페이스의 개념 을 증가 시 키 는 것 이다.함수 식 인 터 페 이 스 는 하나의 방법 을 가 진 일반 인터페이스 이다.이러한 인 터 페 이 스 는 암시 적 으로 lambda 표현 식 으로 변환 할 수 있 습 니 다.java.lang.Runnable 과 java.util.concurrent.Callable 은 함수 식 인터페이스의 가장 전형 적 인 두 가지 예 이다.실제 사용 과정 에서 함수 식 인 터 페 이 스 는 오류 가 발생 하기 쉽다.만약 에 누군가가 인터페이스 정의 에 다른 방법 을 추가 하면 이 인 터 페 이 스 는 더 이상 함수 식 이 아니 라 컴 파일 과정 도 실패 할 것 이다.함수 식 인터페이스의 이러한 취약 성 을 극복 하고 인터페이스 가 함수 식 인터페이스 로 서 의 의 도 를 명확 하 게 밝 힐 수 있 도록 자바 8 은 특수 한 주 해 를 추가 했다.이 함수 식 인터페이스의 정 의 를 봅 시다.
@FunctionalInterface
public interface Functional {
void method();
}
주의해 야 할 것 은 기본 방법 과 정적 방법,그리고 Object 대상 을 다시 쓰 는 방법 은 함수 식 인터페이스의 계약 에 영향 을 주지 않 습 니 다.
lamda 와 함수 식 인터페이스의 조합 사용
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
public class Test {
public static void main(String args[]){
List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
// Predicate predicate = n -> true
// n Predicate test
// n test true
System.out.println(" :");
// n
eval(list, n->true);
// Predicate predicate1 = n -> n%2 == 0
// n Predicate test
// n%2 0 test true
System.out.println(" :");
eval(list, n-> n%2 == 0 );
// Predicate predicate2 = n -> n > 3
// n Predicate test
// n 3 test true
System.out.println(" 3 :");
eval(list, n-> n > 3 );
}
public static void eval(List list, Predicate predicate) {
for(Integer n: list) {
if(predicate.test(n)) {
System.out.println(n + " ");
}
}
}
}
실행 결과:
:
1
2
3
4
5
6
7
8
9
:
2
4
6
8
3 :
4
5
6
7
8
9
작가@이야기 없 는 할아버지 가 사 는 것 은 그 자 체 를 살기 위해 사 는 것 이지,살 아 있 는 것 이외 의 어떤 것 도 살기 위해 사 는 것 이 아니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.