자바19 jdk pattern matching for switch jdk 17 이전 릴리즈 에서는 switch 문의 선택자 표현식은 숫자, 문자열, Enum 상수로만 평가되었고 case 레이블은 상수만 지원을 하였습니다. jdk 17 릴리즈 부터는 switch 문의 선택자 표현식은 모든 타입이 될 수 있으면 case 레이블에는 패턴이 지원되도록 개선 되었습니다. 따라서 switch statement(문) 혹은 switch expression(표현식) 의 case 레이블에 pattern matching 을 적용할 수 있게 되었습니다. 이번 포스팅에서는 jdk pattern matching 을 swich 문과 표현식에 적용하는 방법을 기술합니다. jdk pattern matching for switch 이력 jdk 17 에서 preview 기능으로써 JEP 406 에서 제.. 자바 2023. 8. 26. jdk pattern matching for instanceof pattern matching 은 객체가 특정 구조를 가지고 있는지 테스트한 다음 일치하는 경우 해당 객체에서 데이터를 추출하는 작업을 포함합니다. 이번 포스팅에서는 instanceof 연사자에 pattern matching 을 적용 하는 방법에 대해서 기술합니다. jdk pattern matching jdk 14 버전에서 instanceof 연산자에 대한 pattern matching 기능이 JEP 305 를 통해 preview 기능으로 처음 제안됨 jdk 16 버전에서 instanceof 연산자에 대한 pattern matching 기능이 JEP 394 를 통해 정식 기능으로 릴리즈됨 jdk 17 버전에서 switch 표현식과 구문에 대한 pattern matching 기능이 JEP 406 을 통해 .. 자바 2023. 8. 26. java switch expression - from jdk 14 JDK 12 에서 preview 기능으로 새롭게 추가된 switch expression(표현식)이 jdk 14 에서 정식 릴리즈 되었습니다. 이번 포스팅에서는 정식 릴리즈된 switch expression 에 대해서 소개와 사용 방법에 대해서 소개합니다. JDK14 에 정식 릴리즈된 switch expression 은 JEP 361 에서 제안되었습니다. 기존의 switch 구문(statement) 뿐 아니라 하나의 표현식(expression) 으로써 switch 를 제공합니다. "case L ->" Labels switch label 이 일치하는 경우 label 오른쪽에 있는 코드만 실행되도록 하는 새로운 형태의 스위치 lable 입니다. "case L ->" 로 표현합니다. 아래 코드는 기존의 swit.. 자바 2023. 8. 20. java Array vs ArrayList java 에서는 Array 와 ArrayList 는 컬렉션 데이터를 저장하는데 자주 사용되는 기본적인 데이터 구조이다. 모두 동일한 용도로 사용되지만 서로 다른 특성으로 인해 애플리케이션 성능과 유연성에 영향을 미치는 부분이 있다. 이번 포스팅에서는 자바의 Array 와 ArrayList 의 주요 기능 및 각각의 장단점과 두 구조를 변환하는 여러 기법을 소개한다. Arrays Array(배열) 동일 데이터 타입의 요소를 연속된 메모리 위치에 저장하는 [고정 크기]를 가지는 데이터 구조이다. 배열의 각 요소는 index 로 검색할 수 있으며 첫 번째 요소는 index 0 부터 시작한다. 배열은 항상 동일한 데이터 타입의 요소를 저장한다. 배열 타입은 초기화할 때 고정 사이즈로 선언된다. 각각의 요소들은 i.. 자바 2023. 8. 19. java record 용법 - from jdk 14 jdk 14 에서 새로운 타입 으로 record 가 preview 형태로 도입되었습니다. Enum 타입과 마찬가지로 record 타입은 몇가지 제약사항을 가지고 있으며 불변의 데이터 셋을 정의하는데 상당한 간소함을 제공합니다. JEP 359 에 기술된 내용을 보면 record 의 도입배경과 목적 외에 여러 관련 사항들을 확인해 볼 수 있습니다. 이번 포스팅에서는 record의 제약사항 및 용법에 대해서 알아보겠습니다. record 의 도입배경과 목적 불변의 데이터 셋 (data carrier) 역할을 하는 클래스의 경우에도 생성자, 접근자, equals(), hashCode(), toString() 등 반복적인 코드를 많이 작성해야 하는 불편함과 함께 record 는 불변하는 데이터 집합을 보다 쉽고, .. 자바 2023. 8. 19. CompletableFuture 를 알아보자 자바에서 스레드 처리시에 Future 객체를 통해서 스레드의 실행 결과를 얻어올 수 있다. 하지만 Future 를 사용하는 경우 단일 스레드 처리가 완료될 때까지 blocking 이 일어나게 된다. Future 의 한계점 Future 는 기본적으로 isDone, isCanceled 와 같은 기본사항을 체크할 수 있는 메소드를 제공하지만 각기 다른 실행시간을 가지는 Future 들을 조합해서 계산을 한다든지 다른 질의의 결과와 같이 계산을 한다든지 하는 복잡한 로직을 다루기가 힘들다. CompletableFuture 는 Future 와 CompletionStage 를 상속하는데 CompletionStage 인터페이스를 통해서 다양한 연쇄 작업을 수행할 수 있도록 한다. CompletionStage Comp.. 자바 2023. 8. 6. byte 배열에서 charset 정보 detecting 하기 간혹 바이트 배열의 문자열로부터 인코딩 정보를 알 수 없어 String 타입으로 디코딩 할때 문자열이 깨지는 경우가 있다. 이 경우 charset detector 를 사용하여 해당 바이트 배열로 부터 인코딩 정보를 알 수 있다. 인코딩 정보를 알면 해당 인코딩 정보를 기반으로 디코딩을 하면 되기 때문에 문자열이 깨지는 경우를 어느정도 개선할 수 있다. juniversal charset detector 와 icu4j 사용법에 대한 샘플 코드는 아래와 같다. Juniversal charset detector dependency com.googlecode.juniversalchardet juniversalchardet 1.0.3 package com.example.charset.detect; import or.. 자바 2023. 8. 4. 이전 1 2 다음 💲 추천 글