>  기사  >  Java  >  다양한 Java 버전이 함수에 미치는 영향

다양한 Java 버전이 함수에 미치는 영향

王林
王林원래의
2024-04-19 21:39:01664검색

Java 8은 Lambda 표현식을 도입하고 익명 내부 클래스를 지원하여 로컬 변수에 액세스합니다. Java 9에서는 람다 표현식이 지역 변수를 캡처할 수 있도록 허용하고, Java 10에서는 컴파일러가 람다 표현식 매개변수와 반환 유형을 추론할 수 있는 지역 변수 유형 추론을 구현합니다. 실제 사례에서는 다양한 Java 버전의 지역 변수 액세스 및 유형 추론에 대한 람다 표현식의 영향을 보여줍니다.

다양한 Java 버전이 함수에 미치는 영향

Java 버전이 Lambda 표현식에 미치는 영향

소개

Lambda 표현식은 함수를 객체의 인스턴스로 선언할 수 있도록 Java 8에 도입된 핵심 기능입니다. Java 8 이전에는 익명의 내부 클래스만 사용하여 함수를 구현할 수 있었습니다.

Java 8

Java 8에서 Lambda 표현식은 함수 본문에서 입력 매개변수를 구분하는 화살표 기호(->)로 표시됩니다. 예:

(x) -> x + 1

이 Lambda 표현식은 int 입력 매개변수를 사용하고 x + 1을 반환합니다.

Java 9

Java 9에서는 Lambda 표현식에 대한 로컬 변수 캡처 지원이 도입되었습니다. 이는 이제 람다 식이 최종 유형이 아니더라도 해당 범위의 지역 변수에 액세스할 수 있음을 의미합니다. 예:

int y = 5;
(x) -> x + y

이 람다 식은 최종 유형이 아니더라도 지역 변수 y에 액세스할 수 있습니다.

Java 10

Java 10에는 람다 표현식에 대한 지역 변수 유형 추론 지원이 도입되었습니다. 즉, 컴파일러는 우리가 명시적으로 선언하지 않고도 람다 식 매개 변수의 유형과 반환 유형을 추론할 수 있습니다. 예:

(x, y) -> x + y

이 Lambda 표현식은 명시적으로 선언하지 않았더라도 입력 매개 변수가 int 유형이고 반환 유형이 int 유형이라고 추론할 수 있습니다.

실용 사례

다음은 다양한 Java 버전이 람다 표현식에 미치는 영향을 보여주는 실제 사례입니다.

// Java 8
public static void main(String[] args) {
    int y = 5;
    // 匿名内部类
    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            System.out.println(y); // 无法访问
        }
    };

    // Lambda 表达式
    Runnable lambda = () -> System.out.println(y); // 无法访问
}

Java 8에서 익명 내부 클래스는 최종 유형이 아니기 때문에 범위 내 로컬 변수 y에 액세스할 수 없습니다. . 이 Java 버전에서는 로컬 변수 캡처가 지원되지 않으므로 람다 표현식도 y에 액세스할 수 없습니다.

// Java 9
public static void main(String[] args) {
    int y = 5;
    // 匿名内部类
    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            System.out.println(y); // 可以访问
        }
    };

    // Lambda 表达式
    Runnable lambda = () -> System.out.println(y); // 可以访问
}

Java 9에서는 로컬 변수 캡처 지원이 구현되었으므로 이제 익명 내부 클래스와 Lambda 표현식 모두 범위 내 로컬 변수 y에 액세스할 수 있습니다.

// Java 10
public static void main(String[] args) {
    int y = 5;
    // Lambda 表达式,自动推断类型
    Runnable lambda = (x) -> {
        System.out.println(x + y);
    };
}

Java 10에서 Lambda 표현식은 입력 매개변수 유형과 반환 유형을 자동으로 추론할 수 있습니다. 따라서 람다 식에서 입력 매개 변수의 유형과 반환 유형을 명시적으로 선언할 필요가 없습니다.

위 내용은 다양한 Java 버전이 함수에 미치는 영향의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.