@Data
public class Member {
private Long id;
private String name;
private int age;
}
우리가 자주 마주하는 코드들이다
그런데 우리가 자주 보는 이 코드들이 항상 id 값(보통 PK) 의 타입을 long 이 아니라 Long 으로 주는 것을 알 수 있다
왜 굳이 Wrapper 클래스인 Long을 사용하는 걸까
그에 대한 이유는 null을 사용할 수 있기 때문이다
만약 id 필드의 타입을 long 타입으로 설정한 경우 id 의 default value 는 0이 된다
id 의 기본값이 0 이라는 것은 문제를 초래한다
id 에 '값을 선언하지 않아서 0인 경우'와 '값을 0으로 선언한 경우' 를 구분할 수 없게 된다
하지만 Wrapper 타입을 사용하게 되면(Long 타입을 사용하게 되면) 값을 선언하지 않은 경우에는 null 값이 들어가있으므로 값을 선언하지 않은 경우와 0을 선언한 경우를 구분할 수 있게 된다
결론은,
null 값과 0을 구분해야 하는 경우는 Wrapper 클래스로 선언하자
'Java > Java 기본' 카테고리의 다른 글
함수 파라미터에 final 을 붙이는 이유 (매개변수의 재할당 금지) (0) | 2024.08.30 |
---|---|
record 에 대한 나의 생각 (0) | 2024.08.26 |
DIP 와 인터페이스 소유권의 역전 (0) | 2024.08.26 |
컴파일러와 JVM 을 곁들인 상속의 원리 (동적 바인딩) (1) | 2024.07.24 |
클래스와 다형성, 그리고 오버라이딩 (2) | 2024.07.23 |