오늘도 나름 알차게 공부를 하면서 보낸 것 같다!
저번에 처음 제네릭이라는 개념을 배울때에는 그냥 너무 어려웠어서 머리를 비우고 한귀로 흘리는 마음으로 들었더니 이번에 새로운 개념 배우는 것처럼 너무 새로웠다.. 반성..
제네릭 메서드는 매개변수나 반환값으로 제네릭 타입을 사용하는 메서드이다.
제네릭 메서드를 사용하면 다양한 타입의 매개변수나 반환값을 처리할 수 있어 코드의 재사용성과 유연성을 높일 수 있다.
📢 제네릭 메서드 선언하기
제네릭 메서드는 메서드 이름 앞에 제네릭 타입 매개변수를 선언해야 한다.
이 매개변수는 메서드 내에서 사용되는 타입을 나타내며, 타입 변수로서 사용된다. 타입 변수는 일반적으로 대문자 알파벳 한 글자(T,V..)로 표현할 수 있다.
public static <T> void printArray(T[] arr) { //public <자료형 매개 변수> 반환형 메서드 이름(자료형 매개 변수){}
for (T element : arr) {
System.out.println(element);
}
}
T는 어떤 타입이든 될 수 있으며, 데이터 타입은 컴파일 시에 결정하지 않고 메서드가 호출될 때 실제 타입이 결정된다.
🔔 제네릭 메서드 호출하기
Integer[] intArray = { 1, 2, 3, 4, 5 };
String[] stringArray = { "Hello", "World" };
// Integer 배열 출력
printArray(intArray);
// String 배열 출력
printArray(stringArray);
printArray 메서드를 호출할 때, 컴파일러는 배열의 타입을 추론하여 메서드의 타입 매개변수 T가 Integer 과 String으로 결정되는 것이다.
제네릭 메서드는 보통 제네릭 클래스와 같이 사용되는 경우가 많다.
제네릭 클래스는 클래스 내부에서 제네릭 타입 매개변수를 사용하는 클래스이다. 클래스 이름 뒤에 T와 같이 제네릭 타입 매개변수를 선언하여 정의할 수 있다.
📢 제네릭 클래스 선언하기
public class Box<T> {
private T data;
public void setData(T data) {
this.data = data;
}
public T getData() {
return data;
}
}
위의 Box 클래스는 제네릭 타입 매개변수 T를 사용하여 데이터를 저장하고 반환하는 기능을 제공한다. setData 메서드와 getData 메서드는 각각 매개변수와 반환값으로 T 타입을 사용한다.
🔔 제네릭 클래스 사용하기
제네릭 클래스를 사용할 때는 클래스 이름 뒤에 타입 매개변수를 적어주어야 하고, 객체를 생성할 때는 실제로 사용할 타입을 적어줘야 한다.
Box<Integer> intBox = new Box<Integer>();
intBox.setData(10);
int value = intBox.getData(); // value는 10이 됨
위의 코드에서 intBox 객체는 Box 클래스의 인스턴스이며, Integer 타입의 데이터를 저장한다. setData 메서드를 호출하여 intBox 객체에 데이터를 저장하고, getData 메서드를 호출하여 저장된 데이터를 반환받을 수 있다.