☕ Java

개발을 하다보면 정적 팩토리 메서드를 자주 사용하게 된다.그런데 문득 정적 팩토리 메서드를 왜 사용하는 것인지 정확히 알지 못한채 사용한다는 생각이 들어 정적 팩토리 메서드를 왜 사용해야하는지 한번 정리해보려고 한다. 정적 팩토리 메서드란?우선 팩토리(factory)라는 용어는 GoF 디자인 패턴 중 팩토리 패턴에서 유래한 단어로, 객체를 생성하는 역할을 분리한다는 의미가 담겨 있다. 따라서 정적 팩토리 매서드란 객체 생성의 역할을 하는 클래스 메서드이다.직접적으로 생성자를 통해 객체 생성을 하는 것이 아니라 객체 생성 역할을 대신해주는 정적 팩토리 메서드를 사용해 객체 생성을 하는 것이다. 왜 생성자 대신에 정적 팩토리 메서드를 통해 객체를 생성하는 것일까?생상자와 정적 팩토리 메서드는 객체를 생성한다..
본 포스팅은 [인프런] 스프링 DB 1편 - 데이터 접근 핵심 원리 강의를 바탕으로 공부하고 정리한 글입니다. 자바의 예외 계층 Object • 예외도 객체이므로 최상위 부모가 Object이다. (자바의 모든 객체의 최상위 부모는 Object) Throwable • 최상위 예외 Error • 메모리 부족이나 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외 • 개발자는 이 예외를 잡으려고 해서는 안된다. Exception • 체크 예외 • 애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다. • 컴파일러가 체크하는 예외 (단 RuntimeException은 예외) RuntimeException • 언체크 예외, 런타임 예외 • 컴파일러가 체크 하지 않는 예외 예외 처리 규칙 예외는..
· ☕ Java/API
Stream 클래스에서 제공하는 distinct() 메소드를 활용해 중복을 제거하는 방법에 대해 알아보자. distinct() Stream 클래스 제공하는 메소드로, 중복 요소를 제거하고 고유한 요소로 구성된 새로운 Stream을 반환한다. 중복된 요소를 확인하기 위해 equals(), hascode() 메서드를 사용한다. 중복된 요소가 존재하는 경우 첫번째 위치의 요소를 반환하기 때문에 정렬 순서를 보장한다. 예제) List List intList = Arrays.asList(1, 3, 2, 3, 5, 5, 7, 6); List intStreamToList = intList.stream() .distinct() // 중복 제거, 순서 보장o .collect(Collectors.toList()); Sys..
· ☕ Java/API
이번 포스팅에서는 Java에서 특정 문자열을 원하는 문자열로 치환하는 방법을 소개한다. 1️⃣ replace() 2️⃣ replaceAll() 3️⃣ replaceFirst() replace() 첫번째 인자값 : 변환하고자 하는 대상이 되는 문자열 두번째 인자값 : 변환할 문자 값 String str = "가나다라마바사"; str.replace("나다라", "아자차"); // 가아자차마바사 "나다라"라는 문자를 "아자차"로 치환한다. String str = "가가가가가"; str2.replace("가", "나"); // 나나나나나 "가"라는 문자를 순차적으로 "나"로 치환한다. replaceAll() 첫번째 인자값 : 변환하고자 하는 대상이 되는 문자열 두번째 인자값 : 변환할 문자 값 replace()..
Junit5부터 파라미터 테스트를 사용할 수 있다. 파라미터 테스트파라미터 테스트란?여러 argument를 사용해 테스트를 여러번 돌릴 수 있는 기능사용을 위해 @Test 대신 @ParameterizedTest를 붙여준다.@ParameterizedTest를 사용하면 최소 하나의 source 어노테이션을 붙여줘야 한다. 의존성 추가하기@ParameterizedTest를 사용하기 위해서는 우선 JnuitParams 의존성을 추가해줘야한다.프로젝트 환경(Maven, Gradle)에 맞춰 의존성을 추가해주도록 하자.✅ Maven (버전 확인하기) pl.pragmatists JUnitParams 1.1.1 test✅ GradletestImplementation 'org.junit.jupite..
· ☕ Java/API
이번 포스팅은 Java에서 배열을 자르는 2가지 방법에 대해 소개한다. 1️⃣ 반복문 이용 2️⃣ Arrays.copyOfRange() 이용 반복문 이용하기 public class ArraySplit { public static void main(String[] args) { // 원본 배열 int[] arr = {0, 1, 2, 3, 4, 5}; // 배열을 자를 index int position = 3; // 자른 배열을 담아줄 새로운 배열 int[] splitArr = new int[position]; // 배열 자르기 for (int i = 0; i < arr.length; i++) { if (i < position) { splitArr[i] = arr[i]; } } System.out.print..
추상클래스가 무엇이고 왜 사용하는지 알아보자. 추상클래스란? 추상클래스가 뭘까? A 클래스, B 클래스, C클래스가 있다고 했을 때, 각 클래스 안에는 각자의 필드와 메소드가 있을 것이다. 추상클래스는 A 클래스, B 클래스, C 클래스 간에 비슷한 필드와 메소드를 공통적으로 뽑아내 만들어진 클래스다. 예를 들어 "키보드"라는 클래스가 있다. 이 "키보드"를 만드는 제조사는 여러개이다. A 제조자, B 제조사, C 제조사는 각 제조사만의 스타일대로 키보드를 제작하고 제품을 출시한다. 이때 A 제조사는 키보드를 누를 때마다 불빛이 들어오고, B 제조사는 키보드를 누를 때마다 딸각거리는 소리가 나고, C 제조사는 키보드를 살짝만 눌러도 잘 눌리는 특징을 가진다. 이 키보드들 간에 공통점이 있을까? 바로 "키..
스트림 스트림(Stream)이란 데이터의 흐름을 가리킨다. 컬렉션 인스턴스나 배열에 저장된 데이터들을 꺼내서하는 일련의 작업들을 조금 더 쉽게 하기 위해 스트림을 사용한다. 스트림은 원본 데이터를 변경하지 않는다. 동작 흐름 스트림은 크게 세단계에 걸쳐서 동작한다. 스트림의 생성 스트림의 중간 연산 스트림의 최종 연산 스트림을 생성하고 이를 대상으로 중간 연산을 진행하면, 원하는 기준으로 데이터를 필터링하고 필터링 된 데이터의 결과를 얻을 수 있다. 스트림의 생성은 저장소에 저장된 데이터를 뽑아 파이프에 흘려보내기 좋은 구조로 나열한 인스턴스의 생성을 의미한다. 데이터를 흘려보내는 파이프는 연산을 의미하며, 메소드(파이프)의 종류는 두가지로 나뉜다. 중간 연산 : 마지막이 아닌 위치에서 진행이 되어야하는..
an2z
'☕ Java' 카테고리의 글 목록