2009-10-07 8 views
4

나는 getParameter() 함수 호출에서 값을 가져 오는 일부 문자열 변수를 가지고 있으며이 변수 중 일부는 null 일 수 있습니다.String을 ""로 설정하거나 null로 두십시오.

나중에이 변수를 equals() 방법으로 평가합니다. 문제가 발생하지 않도록 모든 문자열 변수를 null이라면 빈 문자열 ("")으로 설정해야합니까?

+0

문자열 리터럴 인 'null'(즉, 4 자)에 대해 이야기하고 있습니까? 아니면 'null'값에 대해 이야기하고 있습니까? –

+0

값 null에 대해 얘기하고 있습니다. –

+2

null이 값이 아니므로 하나도 부족합니다. skaffman

답변

10

세 가지 옵션이 있습니다. 비교 대상 항목이 null (예 : 상수)이 아닌 것으로 알려진 경우 먼저 해당 항목을 사용하십시오. 널 처음

if (variable != null && variable.equals("hello")) { ... } 

마지막으로 널 (null)과 빈 문자열이 같은 다운 스트림이 다음 빈 문자열로 문자열을 설정 간주 될 수있는 경우에 대한

if ("hello".equals(variable)) { ... } 

확인합니다. 그러나 null을 다르게 처리하려면이 작업을 수행 할 수 없습니다.

+0

선호 ** if ("hello". equals (variable)) ** –

+2

첫 번째 옵션의 구문은 "icky"입니다. 전문 용어라고 생각합니다. 두 번째 옵션은 너무 많은 프로그래머가 그렇게 단순한 부울 연산을 처리하는 것을 보아 왔기 때문에 제가별로 신경 쓰지 않습니다. StringUtils를 선택하면 ... –

13

대안으로 static util 메서드를 사용하여 비교를 수행하는 방법이 있습니다. Apache commons-lang StringUtils.equals(String,String)은 null에 대해 명확하게 정의 된 동작이 가능할 수 있습니다.

// null safe compare 
if (StringUtils.equals(variable,"hello")) {...} 

// is "" or null 
if (StringUtils.isEmpty(variable)) { ... } 

// with static imports it's a bit nicer 
if (isNotEmpty(var1) && isEmpty(var2)) { ... } 
관련 문제