Java
-
[JAVA] - CaseInsensitiveMap 무엇이고 언제 쓰는가?Java/JAVA 2025. 7. 7. 13:33
✅ CaseInsensitiveMap이란?CaseInsensitiveMap은 Apache Commons Collections에서 제공하는 특수한 Map 구현체로,키(String)의 대소문자를 구분하지 않고 저장하고 조회할 수 있는 Map입니다.CaseInsensitiveMap map = new CaseInsensitiveMap();map.put("Name", "홍길동");System.out.println(map.get("name")); // "홍길동"System.out.println(map.get("NAME")); // "홍길동" 🔍 어떤 라이브러리에 있나요?패키지명: org.apache.commons.collections.map.CaseInsensitiveMap라이브러리: Apache Commons..
-
[JAVA] - 1.8 -> 17 버전 업그레이드 Base64오류Java/JAVA17 2025. 6. 27. 10:55
java.lang.NoClassDefFoundError: java/util/Base64 at com.example.Base64Test.encode(Base64Test.java:10) 원인: JDK 8 이상에서 지원되는 java.util.Base64 클래스를 찾을 수 없다는 의미→ JDK 설정이 잘못되었거나, 빌드 시 JDK 1.7 이하 대상으로 컴파일한 결과를 JDK 17에서 실행 중일 때 발생해결: javac와 java 둘 다 JDK 17을 참조하고 있는지 확인 java.lang.NoSuchMethodError: java.util.Base64.getEncoder()Ljava/util/Base64$Encoder; at com.example.Base64Test.encode(Base64Test.java:12..
-
JAVA - Generic을 사용해야하는 이유Java/JAVA17 2025. 6. 12. 11:25
Generic을 사용해야하는 이유 우선 Circle,과 Rectangle에 대한 코드구성부터 알아보자.0. 도형 클래스 정의// Shape.javapackage generic.exShape;public abstract class Shape { private String name; public Shape(String name) { this.name = name; } public String getName() { return name; } public abstract double getArea(); public abstract void draw();}// Rectangle.javapackage generic.exShape;public class Rectangle extends..
-
JAVA - GENERIC 사용방법, 사용이유 파헤치기Java/JAVA17 2025. 6. 10. 15:12
제네릭이란 무엇인가?제네릭의 기본 문법// 클래스를 정의할 때 타입 매개변수 T 선언public class GenericBox { private T value; public void set(T value) { this.value = value; } public T get() { return value; }}T는 Type Parameter(타입 매개변수)의 관례적인 이름입니다.실제 사용할 때는 GenericBox처럼 타입 인자를 지정해 주면, 그 순간부터 T가 Integer로 고정돼요.GenericBox strBox = new GenericBox(); strBox.set("Hi"); // OKString s = strBox.get(); ..
-
행위 패턴(Behavioral Pattern) - 인터프리터(Interpreter) 패턴Java/디자인패턴 2024. 11. 27. 10:29
인터프리터(Interpreter) 패턴은 행위 패턴(Behavioral Pattern) 중 하나로, 주로 언어나 문법을 처리하는 데 사용됩니다. 이 패턴은 언어의 문법을 표현하는 클래스를 정의하고, 그 문법에 맞는 문장을 해석(interpret)하는 방법을 제공합니다. 주로 컴파일러나 스크립트 언어의 구문 분석기 구현에 사용됩니다.1. 인터프리터 패턴의 목적인터프리터 패턴의 목적은 주어진 언어나 표현식의 문법을 해석할 수 있는 클래스를 정의하고, 문법에 맞는 입력을 처리할 수 있도록 하는 것입니다. 이를 통해 다양한 표현식을 객체로 모델링하고, 해당 표현식을 처리하는 방법을 구현할 수 있습니다.2. 인터프리터 패턴의 구성 요소Context: 해석할 문법을 포함하는 입력 데이터를 제공합니다.Abstract..
-
구조(Structural) 패턴 - 복합체(Composite) 패턴Java/디자인패턴 2024. 11. 26. 13:15
복합체(Composite) 패턴은 구조(Structural) 패턴에 속합니다. 이 패턴은 객체를 트리 구조로 구성하여 부분-전체 계층 구조를 표현하는 데 사용됩니다. 클라이언트가 개별 객체와 복합 객체(즉, 객체의 그룹)를 동일하게 취급할 수 있도록 설계됩니다.복합체 패턴의 특징트리 구조 관리:객체를 트리 형태로 구성하여 개별 객체와 복합 객체를 동일하게 처리합니다.재귀적 구성:객체가 자신과 동일한 타입의 객체를 포함할 수 있습니다.클라이언트의 단순화:클라이언트는 개별 객체와 복합 객체를 구분하지 않고 동일한 방식으로 처리할 수 있습니다.복합체 패턴의 구성요소Component (구성 요소):개별 객체와 복합 객체를 동일하게 취급하기 위한 인터페이스를 정의합니다.Leaf (잎):구성 요소의 기본 단위로, ..
-
패턴은 행동(Behavioral) - 책임 연쇄(Chain of Responsibility) 패턴Java/디자인패턴 2024. 11. 24. 21:18
책임 연쇄(Chain of Responsibility) 패턴책임 연쇄(Chain of Responsibility) 패턴은 행동(Behavioral) 패턴에 속합니다. 이 패턴은 요청을 처리하는 여러 객체를 연결하여 요청을 처리할 수 있는 객체가 나올 때까지 객체 체인을 따라 요청을 전달합니다. 요청을 처리할 객체를 동적으로 결정할 수 있도록 설계됩니다.책임 연쇄 패턴의 특징요청 처리의 유연성:요청을 처리할 객체를 명확히 알 필요 없이 처리의 흐름을 객체 간 연결을 통해 동적으로 결정합니다.결합도 감소:요청 발신자와 처리자가 서로를 직접 참조하지 않으므로 객체 간 결합도가 낮아집니다.확장성 증가:새로운 처리 객체를 추가하거나 변경할 때 기존 객체를 수정할 필요 없이 체인에 추가만 하면 됩니다.책임 연쇄 패..
-
생성 패턴(Creational Pattern) - 프로토타입(Prototype) 패턴Java/디자인패턴 2024. 11. 23. 12:14
프로토타입(Prototype) 패턴은 생성 패턴(Creational Pattern) 중 하나로, 객체의 복사본을 생성할 수 있는 메커니즘을 제공합니다. 이 패턴은 객체를 복제하여 새 객체를 만드는 방식으로, 객체 생성에 드는 비용을 줄이고, 객체가 복잡한 구조를 가질 때 유용합니다. 즉, 새로운 객체를 만들 때 객체의 생성과 초기화 과정이 복잡할 경우, 기존 객체를 복사하여 사용하는 방법을 제시합니다.1. 프로토타입 패턴의 목적프로토타입 패턴은 객체를 새로 생성하는 대신, 기존 객체를 복제하여 새로운 객체를 생성하는 방식으로 성능을 개선할 수 있습니다. 이 패턴을 사용하면 객체 생성 시 필요한 시간이 단축되고, 복잡한 객체를 만드는 과정에서 발생할 수 있는 오류를 줄일 수 있습니다.2. 프로토타입 패턴의..