String searchText = "";
if(searchText==null) searchText="";
eventNameList = Arrays.stream(EventNameEnum.values())
.filter(e -> e.getDescription().contains(searchText))
.map(Enum::name)
.collect(Collectors.toList());
String searchText =""
eventNameList = Arrays.stream(EventNameEnum.values())
.filter(e -> e.getDescription().contains(searchText))
.map(Enum::name)
.collect(Collectors.toList());
와 같은 코드에서는 문제가 없다. 하지만 윗부분을 살짞 바꿔서
searchText에 대한 null을 빈칸으로 바꾸면 에러가 나타난다.
String searchText = "";
if(searchText==null) searchText="";
eventNameList = Arrays.stream(EventNameEnum.values())
.filter(e -> e.getDescription().contains(searchText))
.map(Enum::name)
.collect(Collectors.toList());
이유는 자바 람다식은 '종단변수' 를 사용해야한다.
종단변수란 변하지 않는 변수를 말한다. 이래야 하는 이유는
Java에서는 람다 표현식이나 익명 클래스에서 외부 변수를 참조할 때, 그 변수는 종단 변수이어야 합니다. 이는 람다 표현식이나 익명 클래스가 외부 변수의 변경을 안전하게 처리할 수 있도록 하기 위해서이다.
참고)
'TIL' 카테고리의 다른 글
EC2 스프링 띄우기 명령어 모음집 (0) | 2024.06.07 |
---|---|
ec2 db 원격들어가서 바꾸기 (0) | 2024.06.05 |
Oracle In절 순서대로 select하기 (1) | 2024.05.30 |
http header (1) | 2024.05.28 |
Json + 이미지 같이받는법 (1) | 2024.05.27 |