
[Java] Collection 을 parameter 로 받아 ImmutableCollection 을 생성하는 메서드
2025. 2. 16. 15:54
Java
그 옛날 이런 글을 작성했더랬다https://cocoomoo.tistory.com/101#1.1.%20ImmutableCollection%C2%A0 [Java] ImmutableCollection 과 UnmodifiableCollection 과 Immutability테스트 코드를 작성할 때면 List.of 를 무지성으로 사용하고는 했었다.해당 정적팩토리 메소드를 통해 리턴되는 리스트는 불변 객체라고는 알고 있었지만, 어떤 의미에서의 불변인지.. 해당 컬렉cocoomoo.tistory.com 객체지향에 대해 다시 공부하면서 , 게으른 시절 (여전히 게으르지만) 수료 실패한 nextstep 과제를 혼자서 해보고 있다 너무 감이 안잡혀서 빠르지 않게 코드를 작성하고, 다른 사람 PR 들을 보면서 리팩토링을..

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 과 SubclassAggregation 과 CompositionComposition 은 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 UnsupportedOperationExc..

[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..