Programing

_ (밑줄)은 예약 된 키워드입니다.

lottogame 2020. 9. 25. 08:13
반응형

_ (밑줄)은 예약 된 키워드입니다.


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

반응형