여느 때와 다르지 않게 풀리퀘스트 머지 후 젠킨스로 파일이 생성되는 중 생각지 못한 에러에 당황했다.
주요 에러 내용은 이러했다.
Compilation failure
incompatible types: capture#1 of ? cannot be converted to boolean
나는 테스트코드부터 만들고 이상이 없어서 본 개발까지 완료했고,
데이터까지 나왔는데 왜 에러가 떴을까?
개발하는 과정에서 json을 map으로 받는 곳을 개발할 때 와일드카드를 사용해서 개발했는데
이부분에서 ?는 boolean으로 바로 받는 부분에서 컴파일 실패가 뜬것 같다.
if 문을 통해서 받아온 값이 true이면 실행시키려고
Map<?,?> map = (Map<?,?>) exampleData;
...
if ((boolean) data.get("is_true")) {
...
}
이렇게 (boolean) data.get("is_true") 바로 받아와서,
로컬에서 실행할 때는 이상이 없었는데
컴파일에서 에러가 난 것이다.
이제까지 한 번도 컴파일 단계에서 에러가 난적이 없었고, 컴파일 테스트를 인지하지 못했는데
젠킨스에서 처음 이러한 에러가 뜨니까 식은땀이 나면서
우선 빨리 고쳐야 한다는 생각만 들었다.
string to boolean으로 무한 구글링 하며 간결하게 짜 보려고 노력했지만
컴파일 테스트를 다 실패해서
최종적으로는 이런 식으로 올렸다.
Map<?,?> map = (Map<?,?>) exampleData;
...
String booleanStr = data.get("is_true").toString();
boolean isTrue = Boolean.parseBoolean(booleanStr);
if (isTrue) {
...
}
*중간에 booleanStr 단계를 없애고 싶어서 이렇게도 해봤는데
boolean isTrue = Boolean.parseBoolean(data.get("is_true").toString());
여기서도 컴파일 에러가 떠서 사용하지 않았다.