"".equals 라는게 뭘까?
약간 생략이 된부분이 있다. 원래는
public void f(String a){ if(a==null || "".equals(a.trim())){ return; } }
이런 형식으로 종종 사용된다.
어떤 함수를 만들었는데 전달 받는 인자가 문자열이다. 근데 이 문자열이 제대로 들어왔다면 진행하고 null 이나 내용이 없는 문자열이면 처리하지 않고 리턴 하겠다. 라는 의미이다.
근데 왜 a.equals("") 이 아니고 "".equals(a) 인가? 라는 게 요점일것이다.
혹시 a가 null 이라면 어쩔것인가?
물론 앞에서 a==null 이라는 부분을 체크 했지만 혹시 저부분이 없다면?
또 다른 부분에서 a라는 문자열이 "abcd" 라는 문자열과 같은지 비교해보고 싶다. 라고 할때
"abcd".equals(a) 와 a.equals("abcd")와는 어떤 차이가 있을까?
일반적으로 동등 비교를 하게 된다면 null 이 아닐 가능성이 높은 객체를 기준으로 두고 비교를 하게된다.
"abcd" 나 "" 의 경우는 리터럴 이라고 해서 null일 수가 없다. 혹은 미리 자신이 만들어둔 객체. 즉 final String 을 사용할수 있다.
final 이 붙으면 객체 생성시. 게다가 static 까지 붙으면 클레스를 로드하는 시점에서 객체가 생성되지 않을수 없기 때문에 null일 가능성이 적다.
가능성이 적다. 라고 한것은 이것도 null 로 정의해버릴수 있기 때문이다.
이렇게 하는 프로그래밍을 방어적 프로그래밍 이라고 말하기도 한다고 들었다.
이런 방법 말고도 방어복사라던가 하는 부분은 Effective Java 의 뒷부분에서 다루어질것이다.
'Programming > Java' 카테고리의 다른 글
알파 체널을 통해서 이미지를 폴리곤으로 만들기 (0) | 2012.01.19 |
---|---|
'필드'이지만 '메서드'처럼 사용됩니다. (2) | 2012.01.03 |
초간단 원형 링크 리스트 (0) | 2011.11.23 |
java에서 DES/AES 사용법 (0) | 2011.11.22 |
java 7 의 달라진점 몇가지 (0) | 2011.09.26 |