Java, JVM
-
자바에서 날짜와 시간 다루기Java, JVM 2022. 3. 20. 22:30
오늘은 개발을 하면서 피할 수 없는 날짜와 시간 다루기에 대해서 써볼까 한다. 엄청난 레거시 속에서 일하는 나는 두 가지의 질문을 항상 가지고 있었다. java.util.Date를 권장하지 않는다고 하던데, 그러면 도대체 뭘 써야 할까? 시간은 어떻게 테스트해야 할까? 이번 글은 첫번째 질문에 대한 간단한 대답이 될 것 같다. 테스트하는 방법에 대해서는 현 시점까지 시도해본 방법에 대해서 짤막하게 설명하고 언젠가 쓸 글의 주제로 하려고 한다. java.util.Date를 쓰지 말라는 이유 Date를 사용하지 말고 다른 라이브러리를 사용하라는 이야기를 많이 들어봤을 것이다. Date는 흔히 잘못 설계된 라이브러리의 대표적인 사례로 언급된다. 실제로 라이브러리 코드를 찾아보면 @Deprecated가 엄청 많..
-
Effective Java 아이템 32 (Generic, Varargs, Heap Pollution)Java, JVM 2021. 8. 23. 22:14
힙 오염이란? 힙 오염은 parameterized type의 변수가 자신과 다른 타입의 객체를 참조하는 경우에 발생한다. (Parameterized type은 List, Set 같은 것을 의미한다.) 다음과 같은 상황을 들 수 있다. static method heapPollution() { List stringList = new ArrayList(); List integerList = List.of(1); stringList = (List) (Object) integerList; // 힙 오염 발생 String s = stringList.get(0); // ClassCastException } List 타입인 stringList가 List 타입의 객체를 참조하게 되면서 힙 오염이 발생하였다. 이 코드는 ..