NullPointerException 이하 NPE를 피하기 위한 방법은 여러가지가 있습니다.
코딩습관이 잘 되어 있다면 보지 않을 에러지만
약간의 미숙이 에러를 만드는 것 같습니다.
설명하기 앞서
SI 에서는 사용하지 말라고 하는 기업도 있을 겁니다.
그럴 땐 아래 방법이 아닌 코딩한 것을 수정하시면 되겠습니다.
순서
1. 문자열 비교는 equals 를 사용하자
2. 숫자 비교는 수치를 앞에 쓰자
3. toString() → valueOf() 를 사용하자
1. 문자열 비교는 equals 를 사용하자
public static void main(String[] args) {
String a = new String("exam");
if (a == "exam") {
System.out.println("true");
} else {
System.out.println("false"); // false 출력
}
if (a.equals("exam")) {
System.out.println("true"); // true 출력
} else {
System.out.println("false");
}
}
하지만 실무에선 이렇게 코딩을 하지 않고 보통 a = null; 이라는 걸로 변수 선언합니다.
NPE 예시입니다.
public static void main(String[] args) {
String a = null;
if (a == "exam") {
System.out.println("true");
} else {
System.out.println("false"); // False 출력
}
if (a.equals("exam")) { // java.lang.NullPointerException: null 출력
System.out.println("true");
} else {
System.out.println("false");
}
}
2. 숫자 비교는 수치를 앞에 쓰자
Dataset a = new Dataset();
if (a.getDataList().size() > 0) {
~~
}
이렇게 쓰는 코드를
Dataset a = new Dataset();
if (0 < a.getDataList().size()) {
~~
}
이렇게 위치만 바꿔줘도 수정하기 수월할 것입니다.
이 코드는 에러를 직접적으로 해결하기 보단 이유가 무엇인지 알 수 있습니다.
3. toString() → valueOf() 를 사용하자
if (~~.equals(data.get(~~).toString())) {
~~
}
위처럼 쓸 수도 있지만
if (String.valueOf(~~.equals(data.get(~~)))) {
~~
}
로 코딩을 하면 NPE를 직접적으로 피할 수 있게됩니다.
'Web Programming > Java' 카테고리의 다른 글
[React + SpringSecurity + DB] 로그인 구현하기 (Backend) (0) | 2024.01.18 |
---|---|
[Java] Collection 정리 (0) | 2023.11.29 |
[SpringBoot] Controller, Service, Dao 등과 Mapper(Mybatis) 의 type 관계 (오류해결) / CRUD 중 R이 예시 (0) | 2023.11.28 |
[java] 배열을 이용한 for문 만들기 (0) | 2023.10.27 |
[Java / JSP] DTO 자동으로 설정하는 방법 (0) | 2022.10.02 |