_ (밑줄)은 예약 된 키워드입니다.
s
다음 람다 식에서 다음으로 대체 했습니다 _
.
s -> Integer.parseInt(s)
Eclipse 컴파일러는 다음과 같이 말합니다.
'_'는 소스 레벨 1.8부터 예약 된 키워드이므로 식별자로 사용해서는 안됩니다.
JLS §3.9 어휘 구조 / 키워드 에서 설명을 찾지 못했습니다 .
살펴볼 곳은 JLS §15.27.1입니다. Lambda 매개 변수
람다 매개 변수의 이름이 _ (즉, 단일 밑줄 문자) 인 경우 컴파일 타임 오류입니다.
어떤 상황에서든 변수 이름 _을 사용하지 않는 것이 좋습니다. Java 프로그래밍 언어의 향후 버전은이 이름을 키워드로 예약하거나 특수한 의미를 부여 할 수 있습니다.
따라서 Eclipse 메시지는 오해의 소지가 있습니다. 특히 람다 매개 변수에 대해 오류가 생성되거나 다른 _
식별자에 대해 경고가 생성 될 때 두 경우 모두에 동일한 메시지가 사용되기 때문 입니다.
JEP 302의 2 단계 로 람다 식에서 사용되지 않는 매개 변수를 표시하기 위해 특수 문자로 밑줄을 추가 할 예정입니다.
밑줄 처리
많은 언어에서 밑줄 (
_
)을 사용하여 이름이 지정되지 않은 람다 매개 변수를 표시하는 것이 일반적입니다 (그리고 메서드 및 예외 매개 변수의 경우도 유사 함).
BiFunction<Integer, String, String> biss = (i, _) -> String.valueOf(i);
이렇게하면 사용되지 않는 인수에 대한보다 강력한 정적 검사가 가능하고 여러 인수가 사용되지 않음으로 표시 될 수 있습니다. 그러나 밑줄은 Java 8에서 유효한 식별자 였기 때문에 호환성으로 인해 Java에서 밑줄이이 역할을 수행 할 수있는 위치에 대한보다 간접적 인 경로를 취해야했습니다. 1 단계는 Java 8에서 람다 형식 매개 변수 이름으로 밑줄을 금지했으며 (이전에 람다가 존재하지 않았기 때문에 호환성 결과가 없음) 다른 위치에서 밑줄을 식별자로 사용하는 것에 대한 경고가 발행되었습니다. 이 경고가 오류가되었을 때 2 단계는 Java 9에 도입되었습니다. 이제 사용되지 않은 람다, 메서드 또는 catch 형식 매개 변수를 나타 내기 위해 계획된 밑줄 재활을 완료 할 수 있습니다.
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' 카테고리의 다른 글
MySQL에서 중첩 된 트랜잭션이 허용됩니까? (0) | 2020.09.25 |
---|---|
AJAX 및 jQuery와 함께 HTML5 파일 업로드 사용 (0) | 2020.09.25 |
HTML 선택 상자의 높이 (드롭 다운) (0) | 2020.09.25 |
시작하기 : Node.js 용 데이터베이스 설정 (0) | 2020.09.25 |
scrollIntoView는 모든 브라우저에서 작동합니까? (0) | 2020.09.25 |