본문 바로가기
728x90

java 812

Annotation 어노테이션은 메타데이터의 한 형식이다. 어노테이션은 어노테이션을 달은 연산에 대해 직접적인 영향을 주지 않는다. 어노테이션을 다음과 같은 목적으로 사용될 수 있다. 1. Information for the compiler: 어노테이션을 통해 에러를 찾아내고 경고를 억제할 수 있다. 2. Compile-time and deployment-time processing: 소프트웨어 툴들은 어노테이션을 실행해 코드를 나타낼 수 있다. 3. Runtime processing: 일부 어노테이션들은 런타임에 검증되는 데에 사용될 수 있다. Annotations Basics The Format of an Annotation 어노테이션에서 '@'는 컴파일러에게 다음에 오는 것이 어노테이션임을 알려주며 어노테이션은 다음과.. 2022. 4. 23.
12장. 새로운 날짜와 시간 API 자바 8 이전에도 날짜, 시간 관련 API가 존재했다. 자바 1.0에서는 java.util.Date 클래스로, java 1.1에서는 java.util.Calendar 클래스로 이 기능을 제공했다. 하지만 이들은 다음과 같은 문제를 가지고 있다. java.util.Date: 1900년을 기준으로 오프셋, 0에서 시작하는 달 인덱스, JVM 기본 시간대인 CET(Central European Time - 중앙 유럽 시간) 사용, 가변 등. 따라서 다음과 같이 괴상하게(?) 코드를 작성해야 한다. 1 Date date = new Date(117, 8, 21); // 2017년 9월 21일 cs java.util.Calendar: 1900년 부터 시작하는 오프셋은 없지만 여전히 달의 인덱스가 0 부터 시작했다,.. 2022. 3. 30.
11장. null 대신 Optional 클래스 값이 없는 상황을 어떻게 처릴할까? 1 2 3 public String getCarInsuranceName(Person person) { return person.getCar().getInsurance().getName(); } Colored by Color Scripter cs 위 코드의 경우 만약 getCar 메서드를 통해 가져온 객체가 null이거나 getInsurance의 반환값이 null이라면 NullPointerExceptino이 발생한다. 보수적인 자세로 NullPointerException 줄이기 위 코드와 같은 NullPointerException을 줄이기 위해선 다음과 같은 보수적 방식을 사용할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 public String getC.. 2022. 3. 27.
8장 컬렉션 API 개선 컬렉션 팩토리 여러 소수의 문자열을 한번에 저장하려면 add메서드를 사용하는 것보단 Arrays.asList 팩토리 메서드를 사용하는 것이 더 간결하다. 하지만 이 방식으로 만들어진 리스트는 고정 크기라 요소를 갱신할 수는 있지만 새 요소를 추가하거나 삭제할 수 없다. 요소를 추가하거나 삭제한다면 UnsupportedOperationException이 발생한다. 이는 asList 메서드가 내부적으로 고정된 크기의 변환할 수 있는 배열로 구현되었기 때문이다. Set의 경우 다음과 같이 깔끔하지 못하고 내부적으로 불필요한 객체 할당을 하는 연산을 해야 생성할 수 있다. 1 2 3 4 5 Set friends = new HashSet(Arrays.asList("a", "b", "c")); Set friends.. 2022. 3. 15.
728x90