OKKY회원
212
2021-02-01 15:00:25 작성 2021-02-01 15:03:19 수정됨
0
127

Optional ifPresent 사용법 중 질문


안녕하세요. Java에서 null 처리 로직을 고민하다가 Optional을 조금씩 써보고 있다가 궁금한 점이 있어서 질문드립니다.


음.. 고민 중인 코드는 회사꺼다보니 보여드릴순없고 비슷한 로직의 예시를 하나 들어보겠습니다.

public List<String> saveTest() {

	List<String> resultList = new ArrayList<String>();

	TestResultDto testResultDto = otherTestService.selectTest();

	Optional.ofNullable(testResultDto)
		.ifPresent(v -> {
			resultList = testDao.selectResultList(v);
		}
	);

	return resultList;

}


위와 같이 List를 리턴하는 메소드가 있습니다. 코드 내용과 같이 resultList라는 리스트를 하나 만들어두고 testResultDto의 null 여부에 따라 진행이 되는데요,


원래 if(testResultDto != null)로 처리하다가 Optional로 처리를 해보았습니다. testResultDto가 null이 아닐 경우만 그 안에 있는 resultList 할당 코드가 실행이 됩니다.


하지만 위와 같이 코드를 쓰면 resultList를 atomic 타입으로 바꾸지 않으면 사용할 수 없다는 오류가 발생하는데요 이경우엔 List에 특정 값을 할당하려면 어떻게 해야하는지 궁금합니다... 구글링 해봐도 정확한 답을 못 찾겠네요 ㅠㅠ


아 그리고 ifPresent 안에서는 메소드의 리턴 타입이 boolean이면 return false;와 같이 리턴을 하지 못하나요? 아래와 같이 적으니 Unexpected return value로 표시되는걸 보고 ifPresnet 코드를 따라가보니 void 타입으로 리턴을 하더라고요. Optional에서는 null이 아닐 경우 특정 값을 return true; 와 같이 리턴해서 메소드를 끝내려면 어떻게 해야하는지도 궁금합니다.

public boolean saveTest() {

	TestResultDto testResultDto = testDao.selectTest();

	Optional.ofNullable(testResultDto)
		.ifPresent(v -> {
			if("A".equals(v.getType()){
				return false;
			}
		}
	);

	return true;

}


0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.