java-ee - JAVA8 람다 표현식은 외부 변수의 값을 변경합니다.
天蓬老师
天蓬老师 2017-06-12 09:24:10
0
3
899


그림과 같이 etotalPrice를 외부에서 정의한 후 두 개의 for 루프에서 이 값을 변경하려고 했으나 오류가 발생했습니다. 어떻게 해결해야 하나요?
(NumberUtil.add 및 mutiplyu는 +*소수점 2자리를 유지하는 기본 방법입니다)

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

모든 응답(3)
仅有的幸福

Java의 고전 책인 "Effective Java"와 "Java Concurrency in Practice"에서 마스터는 변수 참조 누출이라고도 하는 익명 함수의 변수 참조가 스레드 안전 문제로 이어질 수 있다고 언급했습니다. 따라서 Java8 이전에는 함수를 참조하려면 익명 클래스 내부의 지역 변수는 final, 즉 불변 객체로 선언되어야 합니다.

Java8은 여기에 구문 설탕을 추가합니다. 람다 표현식과 익명 클래스 내에서 지역 변수가 참조되면 직접 최종 변수로 처리됩니다.

이 코드를 리팩터링하는 것이 좋습니다. 람다를 사용하여 값을 반환하고 이를 외부 변수에 할당하세요.

学霸

람다 표현식의 totalPrice는 최종 유형이어야 하며 초기화 후에는 최종 유형을 변경할 수 없으므로 다시 totalPrice에 값을 할당하면 오류가 발생합니다. 따라서 값을 totalPrice에 다시 복사하는 대신 변수를 다시 정의하여 새 값을 저장해야 합니다. 변수를 변경할 수 없는 경우 람다 식을 사용하지 마세요.

刘奇

Final은 물론 불변입니다. 변경해야 한다면 람다를 사용하지 마세요. 람다를 사용한다면 값을 수정하지 마세요

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!