Java for-each 문에서 ConcurrentModificationException이 발생하는 이유
Language/자바2025. 7. 29. 10:20Java for-each 문에서 ConcurrentModificationException이 발생하는 이유

모던 자바 인 액션 8장: 8.2.1 removeIf 메서드 파트를 읽다가 for-each 문을 사용한 예시에서 list의 요소를 제거할 때 ConcurrentModificationException이 발생할 수 있다는 것을 알게 되었다.책에서 에러가 발생하는 이유는 반복자의 상태와 컬렉션의 상태가 동기화되지 않아서라고 설명하며 해결책에 대해서 설명해준다. 나는 동기화되지 않는 이유가 궁금하여 이 부분에 대해서 좀 더 찾아보았다.ConcurrentModificationException이 발생하는 이유에러가 발생하는 코드for (Transaction transaction : transactions) { // 예외가 발생하는 지점 if(Character.isDigit(transaction.getRefer..

Java List의 두가지 remove 메서드 : 제네릭이 Integer라면 값과 인덱스 중 어떤 게 호출될까?
Language/자바2025. 7. 28. 11:57Java List의 두가지 remove 메서드 : 제네릭이 Integer라면 값과 인덱스 중 어떤 게 호출될까?

List 계층 구조 Collection 인터페이스에는 boolean remove(Object o) 메서드가 정의되어 있다.List 인터페이스에는 E remove(int index) 메서드가 정의되어 있다. 여기서 의문이 들었던 것은 아래와 같은 상황에서 어떤 메서드가 호출되는가 하는 것이었다.List numbers = new ArrayList(Arrays.asList(1, 2, 3, 4, 5));numbers.remove(1); // 이건 인덱스 1을 삭제하는 걸까? 값 1을 삭제하는 걸까?System.out.println(numbers); // 출력: [1, 3, 4, 5] 정답은 인덱스 1번 요소가 삭제된다. 즉, 2가 삭제된다.왜냐하면 자바의 오버로딩 선택은 정확히 일치하는 타입의 메서드를 우선으..

Java Unchecked Warning 해결 방법
프로젝트/서블릿 기반 쇼핑몰2025. 1. 3. 11:52Java Unchecked Warning 해결 방법

ServletContext의 Attribute에서 List 값을 다운 캐스팅해서 가져올 때 Unchecked Warning이 발생했는데 이 경고를 해결하는 두 가지 방법을 소개해보겠다.1. Unchecked Warning 원인1.1 제네릭과 타입 소거Unchecked Warning은 주로 제네릭과 관련해서 발생한다. 제네릭은 컴파일 타임에만 타입을 유지하고 런타임에는 타입이 소거된다.이로 인해 컴파일 타임에는 타입 안전성을 보장하더라도 런타임에서는 이를 보장하지 못하게 된다.1.2 주요 원인은 Object로 저장해서 제네릭 타입으로 다운 캐스팅을 해야할 때반환 타입이 Object이므로 특정 타입으로 캐스팅할 때 컴파일러는 타입 안전성을 검증할 수 없다. 왜냐하면 런타임에는 제네릭이 소거되기 때문이다.아래..

1부: 자바 애플리케이션에서 외부 설정 조회 방법
Backend/Spring2024. 12. 18. 22:521부: 자바 애플리케이션에서 외부 설정 조회 방법

자바 애플리케이션 개발 시 외부 설정을 읽을 수 있는 다양한 방법이 존재한다.이 글에서는 OS 환경 변수, JVM 시스템 속성, 커맨드 라인 인수, 그리고 커맨드 라인 옵션 인수(스프링부트)를 통해 설정값을 전달하는 방법을 자세히 알아보겠다.1.  OS 환경변수OS 환경 변수는 운영체제에서 설정된 전역적인 값이다. 이러한 환경 변수는 다양한 프로그램에서 활용될 수 있다.1.1 터미널에서 환경 변수 조회Mac/Linux에서 터미널로 조회printenv 또는 env 명령어를 사용하면 현재 시스템에 설정된 환경 변수를 확인할 수 있다.printenvWindows에서 환경 변수 조회명령 프롬프트에서 다음 명령어를 실행한다.set1.2 자바 코드에서 환경 변수 조회자바에서는 System.getenv()를 통해 O..

image