if(Data.MIMETYPE == StructuredName.CONTENT_ITEM_TYPE){
}else if(Data.MIMETYPE == Phone.CONTENT_ITEM_TYPE){
Item_ContactsPhone phone = new Item_ContactsPhone(mCtx, 0, data1, Integer.getInteger(data2));
addView(phone);
}else if(Data.MIMETYPE == Email.CONTENT_ITEM_TYPE){
Item_ContactsEmail email = new Item_ContactsEmail(mCtx, 0, data1, Integer.getInteger(data2));
addView(email);
}
이런 if 을사용하는데
이클립스 좌측에 작은아이콘이생기고 마우스커서를 갖다대면 Dead Code 라고 나타납니다
그리고 디버깅하려구해도 접근이 안됩니다
뭔가 잘못되었나요?
보아하니 스트링 객체들을 == 으로 비교하시는 것 같은데 스트링비교는 equals()를 사용합니다.
또한 스트링 비교를 제대로 하셨다 하더라도 상수를 비교하시는 것 같은데...
값도 조사해보니.. Data.MINETYPE는 "minetype"인 것 같고
StructuredName.CONTENT_ITEM_TYPE는 "vnd.android.cursor.item/name" 같군요.
상수는 정해진 값이기 때문에 두 상수를 비교를 하게되면 거짓이 되어 참 코드부분은 실행하지 않게 됩니다.
그래서 dead code가 뜨게 되는 것입니다.
숫자와 숫자간에 비교 문자와 문자간의 비교 숫자와 문자간의 비교 상수 등... 을 공부해 보심이 좋을듯합니다.
질문하나만더할께여
위 본문코드에서
addView(phone);
과
addView(email);
가 같이 추가되었을때 하나만 보이는데 왜그럴까요?
이 코딩은
extends LinearLayout 에서
setOrientation(LinearLayout.VERTICAL);
설정된 뷰그룹입니다
dead code 라면 주어진 if 문안의 조건에 해당하는 case가 절대로 일어나지 않을 경우
진입하지 않기 때문에 데드코드를 알려주는건데..
코드 짚어서 Data.MIMETYPE 을 받아오시는걸 로그로 띄워 보는등의 로직을 잘 살펴보시거나
이클립스형이 또 기분이 안좋아서 틱틱 거리는거 일수 있으니 살짜콩 클린을 때려보시길..