0Pricing
Java Academy · 강의

제네릭 메서드·클래스

타입 매개변수를 사용하는 제네릭 클래스를 정의하고 반환 타입 앞에 <T> 를 작성하는 제네릭 메서드를 만듭니다. 타입 추론이 도움이 되는 경우를 배웁니다.

제네릭 메서드·클래스은(는) CoddyKit의 무료 Java Academy 강의입니다. 이것은 3개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Java Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Java Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

개요

제네릭 클래스는 여러 형식에 하나의 설계를 재사용하고, 제네릭 메서드는 제네릭이 아닌 클래스 안에서도 형식 매개변수와 함께 작동합니다. 작은 Pair<T,U>, swap 메서드, 정적 생성 메서드를 만들어 보겠습니다.

제네릭 클래스를 사용하는 이유

클래스를 제네릭으로 만드는 이유는 무엇인가요?

  • 하나의 설계, 여러 형식: 중복을 줄입니다.
  • 형식 안전성: 잘못된 형식을 컴파일 시점에 찾아냅니다.
  • 깔끔한 API: 반환 시 형 변환이 필요하지 않습니다.

코드: Pair<T,U>

Pair<T,U>는 하나의 클래스를 두 가지 형식으로 사용할 수 있게 합니다. 형 변환이 필요하지 않아 API가 명확합니다.

public class Main {
  // Simple generic data holder with two type parameters
  static class Pair<T, U> {
    private final T first;
    private final U second;
    Pair(T first, U second) { this.first = first; this.second = second; }
    T first() { return first; }
    U second() { return second; }
    public String toString() { return "Pair(" + first + ", " + second + ")"; }
  }

  public static void main(String[] args) {
    Pair<String, Integer> p = new Pair<>("age", 21);
    System.out.println(p);
    System.out.println(p.first() + " -> " + p.second());
  }
}

제네릭 메서드: 시그니처

제네릭 메서드는 클래스 자체가 제네릭인지와 관계없이 작동합니다. 시그니처: <T> returnType... 예: <T> T firstOrDefault(T[] arr, T def).

코드: 제네릭 swap

<T>를 메서드 수준에서 선언했으므로 여러 배열에서 작동합니다. 호출할 때 형식을 지정하지 않아도 컴파일러가 추론합니다.

public class Main {
  // Generic utility method: swap two indices of an array of any reference type
  static <T> void swap(T[] arr, int i, int j) {
    T tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp;
  }

  public static void main(String[] args) {
    String[] names = { "Ada", "Bob", "Cyd" };
    swap(names, 0, 2); // works with String[]
    for (int k = 0; k < names.length; k = k + 1) {
      System.out.print(names[k] + (k < names.length - 1 ? " " : "\n"));
    }
  }
}

코드: 정적 제네릭 생성 메서드

정적 제네릭 생성 메서드: of(T v)를 호출하면 형식이 추론됩니다. 사용 방법이 깔끔하고 읽기 쉽습니다.

public class Main {
  static class Box<T> {
    private final T value;
    private Box(T v) { this.value = v; }
    public T get() { return value; }
    // Static generic factory method inside a generic class
    public static <T> Box<T> of(T v) { return new Box<T>(v); }
  }

  public static void main(String[] args) {
    // Type inferred by diamond and method generic parameter
    Box<Integer> bi = Box.of(42);
    Box<String> bs = Box.of("hi");
    System.out.println(bi.get() + 1);
    System.out.println(bs.get().toUpperCase());
  }
}

제네릭 메서드 확인

빠른 확인: 제네릭 메서드는 어떻게 올바르게 선언하나요?

복습

복습: 제네릭 클래스(Pair<T,U>)는 중복을 줄이고, 제네릭 메서드(<T> 시그니처)는 클래스와 관계없이 작동합니다. 형식 추론을 사용하면 호출이 간결해집니다.

자주 묻는 질문

“제네릭 메서드·클래스” 강의는 무료인가요?

네 — “제네릭 메서드·클래스” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Java Academy 강의 전체를 잠금 해제할 수 있습니다. Java Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

“제네릭 메서드·클래스”에서 뭘 배우나요?

타입 매개변수를 사용하는 제네릭 클래스를 정의하고 반환 타입 앞에 <T> 를 작성하는 제네릭 메서드를 만듭니다. 타입 추론이 도움이 되는 경우를 배웁니다. 브라우저에서 직접 실행하는 실습 코드로 Java Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Java Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Java Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 3개 중 3번째 강의입니다.

“제네릭 메서드·클래스” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Java Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Java Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 실전 인터페이스
  2. 제네릭 기초(T, 타입 추론)
  3. 제네릭 메서드·클래스
← Java Academy(으)로 돌아가기