JDK8에서는 기존 java.util.Data, java.util.Calendar 클래스보다 개선된 날짜와 시간 API가 제공된다.
JDK의 기본 날짜 클래스의 문제점
1. 불변 객체가 아니다.
set으로 변경이 가능하다는 점은 누군가 악의적으로 변경할 수 있기 때문에 get/set 메서드에서 직접 Date클래스를 사용하는 것이 위험하다.
2. 상수 필드 남용
calendar.add(Calendar.SECOND, 2);
3. 헷갈리는 월 지정
1월을 0으로 표현하는 문제 + Calendar.OCTOBER로 월을 지정하지만 실질적인 값은 9(!=10)인 문제
4. 일관성 없는 요일 상수
어디서는 일요일이 0, 어디서는 일요일이 1
5. Date와 Calendar 객체의 역할 분담
다소 치명적인데 년/월/일 계산은 Date 클래스만으로는 부족해서 왔다갔다 하는 문제가 있다. 또한 Calendar객체를 생성하고 Date 객체를 생성하는 프로세스를 거치기 때문에 번거롭고 생성비용이 비싸다.
6. 기타 java.util.Date 하위 클래스의 문제
※ 이러한 문제를 해결하기 위해서 java8부터는 LocalDate, LocalTime, LocalDateTime 이라는 클래스를 만들었다
출처
'Java > 기초' 카테고리의 다른 글
[Java] 중첩클래스(Nested Classes) (0) | 2021.09.05 |
---|---|
[Java] 익명클래스(Anonymous Classes) (0) | 2021.09.05 |
[Java] Optional (0) | 2021.08.25 |
[Java] 입력 뜯어보기(Scanner, InputStream, BufferdReader) (0) | 2021.08.14 |
[Java] 스트림(Stream) (0) | 2021.08.10 |