아래와 같은 코드를 실행하고 싶은데요.
반복문 안에서 DB정보를 select 한 값을 List객체에 담고 이 객체를 다시 리스트 객체에 담아서 modelattribute를 통해 view에 전송해요.
이때 DB select해온 값이 null값이 아닌것은 확인 했거든요?
근데 아래 굵게 표시한 results 변수에 노란줄이 그어지면서
"Null pointer access: The variable results can only be null at this location" 이라는 경고창이 나오네요..
그리고 그 아래 굵게 표시한 if(results!==)~~~~부분은 Dead code라고 나오고요..
실제 실행해도 null pointer Exception이 발생해요..
실제 DB조회값은 해당 list<command> 형식으로 조회되어서 schedules.isEmpty() 메서드를 실행해도 false로 나오는데 왜 results가 null이라고 경고창이 뜨는지 모르겠어요...
List<List<addSchedule>> results = null;
List<addSchedule> schedules = null;
for(int i=1; i<32; i++){
String strDay = Integer.toString(i);
if(strDay.length()==1){
strDay = "0"+strDay;
}
String strMonth = Integer.toString(Month);
if(strMonth.length()==1){
strMonth = "0"+strMonth;
}
String strYear = Integer.toString(Year);
String date = strYear+strMonth+strDay;
schedules = scheduleDao.selectById(date);
if(!schedules.isEmpty()){
results.add(schedules); ->"Null pointer access: The variable results can only be null at this location"
}
}
if(results!=null){
model.addAttribute("allSchedule", results); ->dead code
}
model.addAttribute("year",Year);
model.addAttribute("month", Month);
return "calendar/calMain";
첫댓글 코드를 보시면 results 변수에 할당하는 코드가 없네요. 즉, 다음과 같은 형태의 코드가 없습니다.
results = someValue;
results에 값을 할당하는 코드가 없으니 results가 null이고, 따라서 results.add() 코드는 NullPointer 문제가 발생하고
if (results != null)은 항상 false가 되니 if 블록이 실행되지 않는 의미없는 코드, 즉 죽은 코드가 됩니다.