제네릭

2025. 10. 18. 23:45·Java & Spring/Java

□ 정의 

결정되지 않은 타입을 파라미터로 처리하고 실제 사용할 때 파라미터를 구체적인 타입으로 대체시키는 기능

 

- Box 클래스

public class Box<T> {
    public T content;
}

 

- 사용 예시

public class GenericExample {
    public static void main(String[] args) {
        Box<String> box1 = new Box<>();
        box1.content = "안녕하세요";
        String str = box1.content;
        System.out.println(str);

        Box<Integer> box2 = new Box<>();
        box2.content = 100;
        int value = box2.content;
        System.out.println(value);
    }
}
  • box1에는 T대신 String으로 대체
  • box2에는 T대신 Integer으로 대체

□ 사용 목적

  • 타입 안정성 보장
  • 형변환 불필요
  • 코드 재사용성 증가

□ 사용 예시

- Before

import java.util.*;

public class NonGenericExample {
    public static void main(String[] args) {
        List list = new ArrayList(); // 타입 지정 X
        list.add("Hello");
        list.add(123); // 문자열이 아닌 정수도 추가 가능 (문제 발생 가능)

        String str = (String) list.get(0); // 형변환 필요
        String str2 = (String) list.get(1); // 런타임 에러 발생 (ClassCastException)
    }
}

 

- After

import java.util.*;

public class GenericExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>(); // 제네릭 타입 지정
        list.add("Hello");
        // list.add(123); // 컴파일 오류! (타입 안전성 보장)

        String str = list.get(0); // 형변환 불필요
        System.out.println(str);
    }
}

'Java & Spring > Java' 카테고리의 다른 글

Java의 동작원리  (1) 2025.10.13
Java - 비동기처리(CompletableFuture)  (0) 2025.03.06
Java - 비동기 처리(ExecutorService / Future)  (0) 2025.03.04
Java - 비동기 처리(Thread & Runnable)  (0) 2025.03.04
HTTP 요청과 응답에 사용되는 클래스들  (0) 2025.02.06
'Java & Spring/Java' 카테고리의 다른 글
  • Java의 동작원리
  • Java - 비동기처리(CompletableFuture)
  • Java - 비동기 처리(ExecutorService / Future)
  • Java - 비동기 처리(Thread & Runnable)
DJ.Kang
DJ.Kang
백엔드 개발 기록 블로그
  • DJ.Kang
    DJ Hello World
    DJ.Kang
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 이론공부
        • 개념
        • 정보처리기사 필기
        • 정보처리기사 실기 기출
        • 네트워크관리사 2급
        • SQLD
      • 시스템설계
      • Java & Spring N
        • TIL
        • 트러블슈팅
        • 고도화
        • 알고리즘
        • 코딩테스트
        • Java N
        • Spring
        • Thymeleaf
      • 프로젝트
        • coin-trading
        • 트러블슈팅
      • Docker
      • 웹
      • git & github
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    개발로드맵
    프로그래머스 java 기초트레이닝
    java
    java 세수의합
    Java 생성자
    java 멤버
    java 제어자
    java super
    java enhance switch
    자료구조
    데이터 크기
    java two-pointer
    java 에라토스테네스의 체
    java 유클리드 호제법
    java 메서드
    데이터 타입
    Java this
    프로그래머스 java 기초 트레이닝
    java arrays.copyofrnage()
    java기초
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
DJ.Kang
제네릭
상단으로

티스토리툴바