Java 35

java: incompatible types: T cannot be converted to capture#1 of ?

문제 상황enum은 제네릭으로 만들 수 없음 enum Operator {}불가능private final Operate op 불가능하지만 op 는 값이 타입이 정해지지 않은, 알 수 없는 타입때문에 와일트 카드(?)를 사용했으나, T를 ?에 넣을 수 없음 → 타입 불일치if (a instanceof Integer) 조건문을 사용해도 해결되지 않음enum Operator { ADD('+', (a, b) -> a.doubleValue() + b.doubleValue()), ... private final Operate op; Operator(char symbol, Operate op){ this.symbol = symbol; this.op = op;..

어노테이션(Annotation)

어노테이션이란? @를 사용하여 작성 코드에 대한 부가적인 정보를 제공해주는 메타데이터JVM이나 컴파일러, 프레임워크에게 “이 코드는 이런 의미를 갖고 있어요” 라고 알려주는 역할을 한다.// 컴파일러에게 메서드를 오버라이딩하는 것을 알림@Overridepublic String toString() { return "Hello!";}어노테이션이 사용되는 경우컴파일러에게 힌트를 주기 위해런타임 시 리플렉션(reflection)으로 정보 추출프레임워크(@Autowired, @RequestMapping 등)에서 설정이나 행위 지정자주 쓰이는 어노테이션 @Override부모 클래스의 메서드를 정확히 재정의했는지 확인한다.오타나 시그니처 오류 방지@Overridepublic String toString() {..

Java/문법 2025.04.21

Enum 열거형 타입

enum이란?enumeration(열거형)의 줄임말로, 고정된 상수 집합을 표현하기 위한 특수한 클래스이다.내부적으로 각각의 상수가 public static final 객체로 생성된다.예제enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY}// Day.MONDAY로 사용 심화 예제속성 지정상수에 할당할 값은 private final 로 선언사용자 정의 생성자 선언생성자 호출로 enum 상수 정의enum Day { // 생성자 호출 MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6), SUNDAY(7); private fina..

Java/문법 2025.04.21

유틸리티 클래스 (Utility Class)

유틸리티 클래스란?공통적으로 자주 쓰이는 기능(로직)을 모아 놓은 클래스이다.보통 static 메서드로만 구성되어 있고, 객체를 만들 필요 없이 바로 사용 가능하다.유틸 클래스의 특징인스턴스를 만들지 못하게 private 생성자를 사용한다.모든 메서드와 변수는 static 이다.반복되는 코드 로직을 모아서 관리한다.유틸 클래스의 장점중복 제거 가능가독성 향상재사용성사용 예제import java.util.Arrays;public class ValidationUtils { // 생성자 private → 인스턴스화 방지 private ValidationUtils() {} // 상수 선언 public static final String ERROR_NEGATIVE_VALUE = "음수 값이 ..

Java/문법 2025.04.18

switch 표현식 (Switch Expression)

switch 표현식Java 12 에서 처음 소개 되었고,Java 14 에서 정식 릴리즈 되었다고 한다.기존 switch 구문의 문제점break를 깜빡하면 fall-through 오류 발생하한다.값을 직접 반환할 수 없다.코드가 장황해지기 쉽다.int result;switch (op) { case '+': result = a + b; break; case '-': result = a - b; break; default: result = 0;}switch 표현식의 특징 (Java 14+)switch 자체가 값을 반환하므로 변수에 바로 대입 가능하다.콜론(:) 대신 화살표(->) 사용yield 키워드 사용하나의 문장(또는 표현식)이..

Java/문법 2025.04.18

반복문 안에서 InputMismatchException 예외 발생 시 무한 루프 발생

while문 안에서 Scanner 입력 오류로 안해 무한 루프가 발생했다... 기존 코드InputMismatchException 발생되면, catch (Exception e) 에서 잡힌다.하지만, 버퍼가 비워지지 않아 continue -> InputMismatchException -> continue -> ... 무한 굴레에 빠지게 되었다.while(true){ try { num1 = sc.nextInt(); // 문자열 입력 시 InputMismatchException 발생 ! num2 = sc.nextInt(); sc.nextLine(); // 버퍼 비우기 ... } catch (Exception e) { System.out.pr..

[📙 Java 문법 종합반] 3-7. 쓰레드(Thread)

📙 목차쓰레드(Thread)란?싱글 쓰레드(Single Thread)멀티 쓰레드(Multi-Thread)와 쓰레드 구현join() - 특정 쓰레드가 끝날 때까지 기다리기Runnable 인터페이스 활용 (권장)실습 과제🧡 학습 목표쓰레드가 무엇인지 학습한다.1. 쓰레드(Thread)란?프로그램 내에서 독립적으로 실행되는 하나의 작업 단위싱글 쓰레드 는 한 번에 하나의 작업만 처리하지만 멀티쓰레드는 여러 작업을 동시에 처리할 수 있다.멀티 쓰레드를 활용하면 여러 작업을 병렬로 수행할 수 있어 처리 성능을 향상시킬 수 있다.2. 싱글 쓰레드(Single Thread)한 번에 하나의 작업만 처리여러 개의 작업을 순차적으로 처리한다.main() 메서드는 프로그램 시작과 동시에 생성되는 하나의 쓰레드이다.pub..

Java/강의 2025.04.17

[📙 Java 문법 종합반] 3-5. 람다(Lambda)

📙 목차익명 클래스람다(Lambda)람다 사용 시 주의사항람다식을 매개변수로 전달하는 방법🧡 학습 목표람다가 무엇인지 학습한다.1. 익명 클래스이름이 없는 클래스를 익명 클래스라고 한다.별도의 클래스 파일을 만들지 않고 코드 내에서 일회성으로 정의해 사용하기 때문에 이름이 없다고 한다.인터페이스, 클래스(일반, 추상)의 구현과 상속을 활용해 익명 클래스를 구현할 수 있다.람다에서는 인터페이스를 사용한 익명 클래스가 활용된다. 익명 클래스 예제익명 클래스를 코드내에서 직접 구현하기 때문에 클래스 파일을 만들 필요가 없다.하지만 코드가 길어진다.public class Main { public static void main(String[] args) { // ✅ 익명 클래스 활용 ..

Java/강의 2025.04.16

[📙 Java 문법 종합반] 3-4. 제네릭(Generic)

📙 목차제네릭(Generic)이란?제네릭 활용(재사용성 + 타입안정성)제네릭 메서드🧡 학습 목표제네릭이 무엇인지 학습한다.1. 제네릭(Generic)이란?제네릭은 클래스, 메서드 등에 사용되는 타입 매개변수를 의미한다.타입을 미리 지정하지 않고 사용 시점에 유연하게 결정할 수 있는 문법이다.제네릭을 활용하면 코드 재사용성과 타입 안정성을 보장받을 수 있다.과도하게 사용하면 오히려 복잡해질 수 있으므로 주의해야 한다.2. 제네릭 활용(재사용성 + 타입안정성)제네릭 구조(타입매개변수) 는 제네릭에서 타입을 의미하는 자리이다.실제 데이터 타입으로 대체되어 활용된다.(타입매개변수) 제네릭 클래스클래스 선언부에 가 선언된 클래스이다.클래스 선언시 타입 매개변수를 사용해 다양한 데이터 타입을 안전하게 처리..

Java/강의 2025.04.16

[📙 Java 문법 종합반] 3-3. 컬렉션(Collection)

📙 목차컬렉션(Collection)이란?배열의 한계컬렉션 종류와 특징실습 과제🧡 학습 목표Java 에서 컬렉션을 학습한다.1. 컬렉션(Collection)이란?자바 컬렉션 프레임워크는 이러한 자료구조들을 쉽게 사용할 수 있도록 인터페이스와 구현체(ArrayList, HashSet, HashMap 등)를 제공하는 집합이다.컬렉션을 통해 데이터 저장, 조회, 삭제, 정렬 등 다양한 기능을 간편하게 구현할 수 있다.배열과 다르게 컬렉션은 길이를 동적으로 변경할 수 있다.추가, 삭제 시 유연하게 길이가 변경된다. Collections (Java Platform SE 8 )Rotates the elements in the specified list by the specified distance. After c..

Java/강의 2025.04.16