✨ 경험·생각·독서

자바 코드 ? cannot be converted to boolean 에러

토심 2021. 7. 13. 20:21

 

여느 때와 다르지 않게 풀리퀘스트 머지 후 젠킨스로 파일이 생성되는 중 생각지 못한 에러에 당황했다.

주요 에러 내용은 이러했다.

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());

여기서도 컴파일 에러가 떠서 사용하지 않았다.

 

 

 

 

 

 

 

 

 


커피 한 잔 후원하기