제네릭 메서드·클래스
타입 매개변수를 사용하는 제네릭 클래스를 정의하고 반환 타입 앞에 <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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 실전 인터페이스
- 제네릭 기초(T, 타입 추론)
- 제네릭 메서드·클래스