ConcurrentModificationException 은 어디서, 언제 throw 되는걸까?
2023. 4. 12. 19:40
Java
Java 개발을 한 사람들이라면 ConcurrentModificationException 에 대해 들어보았을 것이다. Collection에서 순회중, 데이터의 조작이 발생하는 경우 ( 이름만 보면 분명 Concurrent 인데 멀티스레드가 아닌 단일 스레드 환경 에서도 해당 예외가 발생한다. ) thread가 간섭 하면서 발생 이라고 흔히들 알고 있을 것 같다. 오늘은 대체 이 ConcurrentModificationException 이 내부적으로 어떤 로직에 의해 throw 되는 것인지 알아보기로 했다. ConcurrentModificationException 발생 시켜 보기 내부적으로 Iterator 를 사용하는 코드가 존재하는 경우 발생하게 된다. 가장 흔하게 볼 수 있는 것은 이미 해당 Colle..
Aggregation 과 Composition 개념
2023. 3. 24. 11:41
Java
서브클래스, 서브타입, 클래스들간의 각종 관계 등에 대해 정리해보고자 시리즈물로 준비했다. 나는 이 부분에 대해 전혀 모르기 때문에 간단한 정리가 될 것이다. 1. 타입과 클래스들의 관계 그리고 리스코프 치환원칙 2. Aggregation 과 Composition 개념 3. Subtype 과 Subclass Aggregation 과 Composition Composition 은 Java 개발을 하면서 “상속 대신 컴포지션을 사용하라” 라는 말로 수도 없이 많이 들어온 용어다. 그리고 알게모르게 대부분의 자바 개발자들은 Composition 을 사용하고 있으니 익숙하다..고 생각했다. 그런데 이펙티브 자바 스터디를 진행하는 과정에서 누가 화두를 꺼냈다. Aggregation 과 Composition 의 차..
[Java] ImmutableCollection 과 UnmodifiableCollection 과 Immutability
2022. 5. 31. 01:32
Java
테스트 코드를 작성할 때면 List.of 를 무지성으로 사용하고는 했었다. 해당 정적팩토리 메소드를 통해 리턴되는 리스트는 불변 객체라고는 알고 있었지만, 어떤 의미에서의 불변인지.. 해당 컬렉션에 담겨있는 element는 변경이 가능한 것 같은데 왜 Immutable 이라는 이름이 붙어있는지 궁금해졌다. 그래서 교육 방학 첫날(?) release note 를 통해 알아보았다 ImmutableCollection @jdk.internal.ValueBased static abstract class AbstractImmutableCollection extends AbstractCollection { // all mutating methods throw UnsupportedOperationException @O..
[effective java] Item34 : int const 대신 열거타입(enum 사용) + 그리고 State pattern
2022. 1. 22. 22:35
책/effectiveJava
Item34 : int constant대신 enum을 사용하라 JAVA에서는 두 가지 특별한 reference type을 제공하고 있다. class의 일종인 enum type interface의 일종인 annotation type 기존에는 어떠했나? 정수 열거패턴, int enum pattern 이라고 알려진 기법을 사용했다. named [ int constant ]의 그룹을 선언하여 사용했다. ( JAVA에서는 static final로 선언 ) public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int ORANGE_NAVEL = 0; public static final in..