_(언더스코어)는 예약된 키워드입니다.
방금 교체했습니다.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
'programing' 카테고리의 다른 글
마리아DB 루스터를 초기화할 때 백엔드 연결을 열지 못했습니다. -98(이미 사용 중인 주소) (0) | 2022.09.12 |
---|---|
POST 요청 %5B 및 %5D는 무엇을 나타냅니까? (0) | 2022.09.12 |
int num = Integer.get이 되는 이유정수("123") 던지기 Null Pointer예외? (0) | 2022.09.12 |
원칙의 기본값 (0) | 2022.09.12 |
mysql에서 그룹 이름 전 날짜 및 시간별로 주문 (0) | 2022.09.11 |