제네릭

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
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 이론공부
        • 개념
        • 정보처리기사 필기
        • 정보처리기사 실기 기출
        • 네트워크관리사 2급
        • SQLD
      • 시스템설계
      • Java & Spring
        • TIL
        • 트러블슈팅
        • 고도화
        • 알고리즘
        • 코딩테스트
        • Java
        • Spring
        • Thymeleaf
      • 프로젝트
        • coin-trading
        • 트러블슈팅
      • Docker
      • 웹
      • git & github
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바