자바 8 의 새로운 문법 적 특성 도입 에 대한 간략 한 설명
6230 단어 Java 8
자바 8 의 람 다 익 스프 레 션 은 C,C++와 다르다.Apple 은 LLVM Clang 을 위해 Blocks 문법 특성 을 새로 개발 하여 GNU 99 표준 C 컴 파일 러 가 Clang 컴 파일 러 에서 Lambda Expression 을 사용 할 수 있 도록 했다.C++는 C++11 표준 에 람 다 표현 식 을 도입 했다.Clang 은 Lambda 표현 식 에 새로운 유형 인
C++11 은[capture>](
자바 8 은 남 다른 방식 을 사용 했다.인 터 페 이 스 를 정의 한 다음 인 터 페 이 스 를 Lambda 표현 식 으로 참조 할 수 있 습 니 다.이 인 터 페 이 스 는 물론 제한 이 있 습 니 다.즉,함수 인터페이스 여야 합 니 다!함수 인터페이스 란 무엇 입 니까?즉,하나의 interface 는 추상 적 인 방법 만 있 는 인 터 페 이 스 를 함수 인터페이스(functional interface)라 고 한다.그리고 lambda 표현 식 의 실 체 는 다음 과 같이 정의 합 니 다.(<매개 변수 목록>)->{
비록 이런 형식 은 좀 기발 하지만,다행히 너무 번 거 로 운 편 은 아니다.자바 가 C++나 Objective-C 보다 진심으로 수 다 를 떨 기 때문이다.이번에 Method Reference 가 생 긴 후 많은 디자인 을 간소화 할 수 있 습 니 다.다음 예 에서 도 이 점 을 보 여 준다.
package src;
import java.util.ArrayList;
interface MyLambdaFunc {
public void call(int p);
}
class MyClass {
public static void helloStaticMehtod(int a) {
System.out.println("Static method value is: " + a);
}
public void memberMethod(int a) {
System.out.println("Member method is: " + a);
}
public void method1(int a) {
System.out.println("Method 1:" + (a + 1));
}
public void method2(int a) {
System.out.println("Method 2: " + (a + 2));
}
public void method3(int a) {
System.out.println("Method 3: " + (a + 3));
}
}
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Hello, world");
// Type inference
ArrayList<String> arr = new ArrayList<>();
arr.add("hello");
// Lambda Expression test
final int a = 10;
MyLambdaFunc lambda = (p) -> {
System.out.println("The value is: " + (a + p));
};
lambda.call(100);
// Method Reference test
MyLambdaFunc methodRef = MyClass::helloStaticMehtod;
methodRef.call(-100);
MyClass mlc = new MyClass();
methodRef = mlc::memberMethod;
methodRef.call(-200);
MyLambdaFunc methodList[] = { mlc::method1, mlc::method2, mlc::method3 };
methodList[0].call(100);
methodList[1].call(100);
methodList[2].call(100);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 날짜, 시간 표현하기1.Java 날짜, 시간 API java.util.Date -> java.util.Calendar -> java.time.(LocalDate, LocalTime, LocalDateTIme) Java 초기에는 Date...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.