programing

_(언더스코어)는 예약된 키워드입니다.

prostudy 2022. 9. 12. 10:33
반응형

_(언더스코어)는 예약된 키워드입니다.

방금 교체했습니다.s다음 람다 표현에서_:

s -> Integer.parseInt(s)

Eclipse 컴파일러:

'_'는 소스 레벨 1.8 on부터 예약된 키워드이므로 식별자로 사용할 수 없습니다.

JLS 3 3 . 9 Lexical Structure / Keywords 에는 설명이 없습니다.

살펴봐야 장소는 JLS §15.27.1.

lamda 파라미터의 이름이 _(즉, 단일 밑줄 문자)인 경우 컴파일 시 오류가 발생합니다.

모든 컨텍스트에서 변수 이름 _을 사용하는 것은 권장되지 않습니다.Java 프로그래밍 언어의 향후 버전은 이 이름을 키워드로 예약하거나 특별한 의미를 부여할 수 있습니다.

이클립스 메시지는 특히 람다 파라미터에 대해 오류가 생성되거나 다른 파라미터에 대해 경고가 생성될 때 두 경우 모두에 동일한 메시지가 사용되므로 오해를 일으킬 수 있습니다._식별자

JEP 302의 2단계에서는 람다 식에서 사용되지 않는 파라미터를 나타내기 위해 특수 문자로 밑줄을 추가합니다.

밑줄 처리

많은 언어에서 일반적으로 밑줄( )을 사용합니다._이름 없는 람다 파라미터(및 메서드 파라미터와 예외 파라미터의 경우도 마찬가지)를 나타냅니다.

BiFunction<Integer, String, String> biss = (i, _) -> String.valueOf(i);

이를 통해 미사용 인수의 스태틱체크를 강화하고 여러 인수를 미사용으로 마킹할 수도 있습니다.단, Java 8에서는 언더스코어가 유효한 식별자였기 때문에 호환성에서는 Java에서 언더스코어가 이 역할을 수행할 수 있는 위치에 도달하기 위한 보다 간접적인 경로가 필요했습니다.단계 1에서는 Java 8에서는 lamda 정식 파라미터명으로 언더스코어를 사용할 수 없습니다(이러한 파라미터명은 lamda가 이전에는 존재하지 않았기 때문에 호환성에는 영향을 주지 않습니다).다른 장소에서 언더스코어를 식별자로 사용하는 것에 대해 경고가 발행되었습니다.단계 2는 Java 9에서 이루어졌으며, 이 경고가 오류가 되었습니다.이제 사용하지 않는 람다, 메서드 또는 캐치포멀 파라미터를 나타내기 위해 계획된 언더스코어 재활을 완료할 수 있습니다.

Java SE 9의 Java 언어 변경 https://docs.oracle.com/javase/9/language/toc.htm#JSLAN-GUID-16A5183A-DC0D-4A96-B9D8-AAC9671222DD

Java 9부터는 람다 컨텍스트 내에서뿐만 아니라 _ 문자를 더 이상 식별자로 사용할 수 없습니다.

밑줄 문자는 합법적인 이름이 아닙니다.

식별자에 밑줄 문자("_")를 사용하면 소스 코드를 더 이상 컴파일할 수 없습니다.

언급URL : https://stackoverflow.com/questions/23523946/underscore-is-a-reserved-keyword

반응형