Lambda 표현 식
Lambda 는 익명 함수 입 니 다.Lambda 표현 식 을 전달 할 수 있 는 코드 로 이해 할 수 있 습 니 다.더욱 간결 하고 유연 한 코드 를 쓸 수 있다.더욱 치밀 한 코드 스타일 로 자바 의 언어 표 현 력 을 향상 시 켰 다.
lambda 를 사용 하기 전에 익명 내부 클래스 를 만 드 는 것 을 살 펴 보 겠 습 니 다.
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(" Runnable ");
}
});
lambda 표현 식:new Thread()->System.out.println("Runnable 방법 실행");/참조 없 는 Lambda 표현 식
Idea 에서 lambda 를 변환 할 수 있 는 코드 를 만나면 회색 알림 이 있 습 니 다.alt+enter 를 누 르 면 자동 으로 변환 할 수 있 습 니 다.
2.람 다 문법
자바 8 에 새 연산 자'->'를 도 입 했 습 니 다.이 연산 자 는 화살표 연산 자 나 Lambda 연산 자 라 고 합 니 다.
화살표 연산 자 는 Lambda 표현 식 을 두 부분 으로 나 눕 니 다.
왼쪽:Lambda 표현 식 의 매개 변수 목록
오른쪽:Lambda 표현 식 에서 실행 할 기능,즉 Lambda 체
예시:
문법 형식 1:인자 가 없고 반환 값 이 없습니다.
Runnable r = () -> System.out.println("Hello World");
r.run();
문법 형식 2:인자 가 하나 있 고 반환 값 이 없습니다.
Consumer consumer = (x) -> System.out.println(x);
// : x -> System. out.println(x); ,
consumer.accept("Hello");
문법 형식 3:두 개 이상 의 인자 가 있 고 반환 값 이 있 으 며 Lambda 체 에는 여러 개의 문구 가 있 습 니 다.
Comparator<Integer> comparator = (x, y) -> {
System.out.println("Hello");
return Integer.compare(x, y);
};
TreeSet<Integer> treeSet = new TreeSet<>(comparator);
문법 형식 4:Lambda 체 에 한 문장 만 있 으 면 return 과 대괄호 는 모두 생략 하고 쓰 지 않 을 수 있 습 니 다.Lambda 표현 식 의 매개 변수 목록 의 데이터 형식 은 생략 하고 쓰 지 않 을 수 있 습 니 다.JVM 컴 파일 러 는 문맥 을 통 해 데이터 형식 을 추정 할 수 있 기 때 문 입 니 다.즉,유형 추정 입 니 다.Comparator
유형 에 대한 추측 은 사실 배열 에서 우 리 는 이미 사용 한 적 이 있다.
String[] strArr = {"a","b", "c"}; //
//
String [] strArr;
strArr = {"a","b", "c"};
// List :
List<String> list = new ArrayList<>();
3.함수 식 프로 그래 밍 인터페이스위 에서 우리 가 본 lambda 표현 식 은 모두 인터페이스의 지원 에 의존 하고 lambda 표현 식 의 본질은 인터페이스 에 대한 실현 이다.이 인 터 페 이 스 는 함수 식 인터페이스,즉 인터페이스 에 추상 적 인 방법 만 있 는 인터페이스 라 고 한다.함수 식 인 터 페 이 스 는@Function Interface 주해 수식 을 사용 할 수 있 으 며,수 식 된 인 터 페 이 스 는 반드시 함수 식 인터페이스 여야 한 다 는 것 을 나타 낸다.
//
@FunctionalInterface
public interface FuncTest {
void accept(Object o);
}
함수 식 인터페이스 에 두 개 이상 의 방법 을 쓰 면 컴 파일 이 잘못 될 수 있 습 니 다.우 리 는 함수 식 인터페이스의 사용 에 대해 실제 적 인 예 를 써 서 알 아 보 겠 습 니 다.
// 1.
@FunctionalInterface
public interface FuncTest {
void operation(Integer x);
}
// 2. , ,
private static Integer operate(Integer a, FuncTest funcTest) {
return funcTest.operation(a);
}
// 3.
System.out.println(operate(1, (x) -> x + x)); // 2
우 리 는 세 번 째 단계 에서 야 함수 식 인터페이스의 실제 기능 을 정의 하고 두 개의 수 를 더 해서 결 과 를 되 돌려 주 는 것 을 볼 수 있다.lambda 의 가장 편리 한 점 은 바로 이것 입 니 다.코드 를 매개 변수 로 전달 하 는 것 이 매우 유연 하고 우리 의 코드 를 크게 간소화 하 는 것 입 니 다.4.자바 8 에 내 장 된 4 가지 상용 함수 식 인터페이스
Consumer:소비 형 인터페이스
방법:void accept(T t);
Consumer
consumer.accept("Hello"); // 인쇄 Hello
Supplier:공급 형 인터페이스
방법:T get();
Supplier
System.out.println(supplier.get()); // 인쇄 Hello
함수 형 인터페이스
방법:R apply(T t);
Function function = x -> "Hello " + x;
System.out.println(function.apply("World"));
Predicate:단언 형 인터페이스
방법:boolean test(T t);
Predicate predicate = x -> x == "Hello";
System.out.println(predicate.test("Hello"));
ava.util.function 은 자바 의 함수 식 프로 그래 밍 을 지원 하 는 여러 가지 종 류 를 포함 하고 있 습 니 다.이 가방 의 함수 식 인 터 페 이 스 는 다음 과 같 습 니 다.
5.총화
자바 8 이 lambda 표현 식 을 도입 한 것 은 함수 식 프로 그래 밍 언어 를 받 아들 인 사상 이다.예 를 들 어 scala 와 같은 것 은 함 수 를 1 등 시민 으로 보고 고급 함수 등 을 사용 할 수 있다.명령 식 프로 그래 밍 에 비해 함수 식 프로 그래 밍 은 명령 의 집행 보다 함수 의 계산 이 중요 하 다 는 것 을 강조 한다.프로 세 스 프로 그래 밍 에 비해 함수 식 프로 그래 밍 에서 함수 의 계산 은 수시로 호출 할 수 있다.
lambda 표현 식 은 코드 를 간결 하 게 보일 수 있 지만 어느 정도 코드 의 가 독성 과 디 버 깅 의 복잡성 을 증가 시 켰 기 때문에 사용 할 때 가능 한 한 팀 이 익숙 하 게 사용 하거나 아예 사용 하지 마 세 요.그렇지 않 으 면 유지 하 는 것 이 고 통 스 러 운 일 입 니 다.
이상 의 이 글 은 Lambda 표현 식 이 바로 편집장 이 여러분 에 게 공유 한 모든 내용 이라는 것 을 철저히 이해 하 게 해 드 립 니 다.여러분 에 게 참고 가 되 고 여러분 들 이 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java의 Lambda 표현식 이해가상 확장 방법, 또한 공공 변호(defender) 방법이기도 하다.이 기능은 인터페이스 정의에서 방법을 기본적으로 구현할 수 있습니다.예를 들어 당신은 기존의 인터페이스 (예를 들어 List와 Map) 에 대해 하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.