Java8 Lambda 표현식 상세 정보 및 인스턴스
Lambda가 나타나기 전에 다중 스레드를 작성하려면 다음과 같은 방법이 필요할 수 있습니다.
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("Hello runnable");
}
};
...
thread.start();
위의 예는 Lambda를 사용하는 것으로 바꾸면 훨씬 간단해진다.
Runnable noArgs = ()->System.out.println("Hello Lambda!~");
...
thread.start();
Lambda 표현식은 익명 함수로 행위를 데이터처럼 전달하고, 표현식은 ->를 사용하여 매개 변수와 주체를 분리하고, ->앞은 매개 변수 부분, 뒤는 주체 부분이다.Lambda의 다른 형식
BinaryOperator<Long> add = (x,y)->x+y;
//OR
BinaryOperator<Long> add = (Long x,Long y)->x+y;
//OR
BinaryOperator<Long> add = (Long x,Long y)->{
x+y;
};
그럼 질문이 왔습니다.
BinaryOperator
이 줄 코드는 숫자를 덧붙이는 것이 아니라 두 숫자가 덧붙인 결과를 계산하는 함수를 만들었다.add의 유형은 BinaryOperator
BinaryOperator<Long> add = (Long x,Long y)->x+y;
Long res = add.apply(3L, 4L);
System.out.println("res="+res);// :res=7
함수 인터페이스함수 인터페이스는 Lambda 표현식의 유형으로 사용되는 추상적인 방법만 있는 인터페이스입니다.
Runnable과 같은 함수 인터페이스입니다.
함수 인터페이스를 새로 만듭니다.
public interface AddOperator<T,D> {
long add(T one,D two);
}
사용:
AddOperator<Long,Long> addOperator = ( x, y)->x +y;
System.err.println("Custom function listener res= "+addOperator.add(34L, 65L));
대상 유형대상 유형은 Lambda 표현식이 있는 컨텍스트 환경의 유형입니다.예를 들어 Lambda 표현식을 국부 변수에 부여하거나 하나의 방법에 매개 변수로 전달하면 국부 변수나 방법 매개 변수의 유형이 바로 Lambda 표현식의 목표 유형이다.
final
만약 우리가 익명 내부 클래스에서 그 방법의 국부 변수를 인용했다면, 이것은 국부 변수가final이어야 하는 것이다.
Lambda에서 인용된 외부 국부 변수를final로 표시할 필요는 없지만, 이 변수는 한 번만 값을 부여할 수 있습니다.
다음 예에서 주석을 삭제하고name에 다시 값을 부여하면 컴파일링을 통해 오류 정보를 표시할 수 없습니다:local variables referenced from a Lambda expression must be final or effectively final.
Lambda 표현식이 인용하는 국부 변수는final 또는 사실이 된final이어야 합니다.
String name = getUserName();
//name="hi";
button.addActionListener(event->System.out.println("name="+name));
유형 추정Lambda 표현식의 유형 추정은 Java7에 도입된 목표 유형 추정의 확장입니다.
java7의 유형 추정:
List
상례에서 우리는 Array List의 범주 유형을 지정하지 않고 list의 유형에 따라 Array List의 범주 유형을 추정했다.
예: AddOperator
이 글을 통해 여러분에게 도움이 되고 이해를 배울 수 있기를 바랍니다. 이 부분의 지식은 여러분의 본 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 8 새 기능 내장 함수식 인터페이스 상세 정보Java 8 새로운 기능 내장 함수식 인터페이스 이전의 블로그 람다 표현식에서 자바 8이 제공하는 함수식 인터페이스를 언급한 적이 있다.이 글에서 자바 8의 가장 기본적인 함수식 인터페이스를 소개할 것이다 방법의 인...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.