반응형
Generic(제네릭)
- 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법
- 타입을 일반화하는 것
- 외부에서 지정 : 사용자가 제네릭 클래스의 인스턴스를 생성할 때나 제네릭 메소드를 호출할 때 타입을 정하는 것
제네릭 타입 매개변수(< >)
- 타입을 일반화하여 사용할 수 있도록 해 주는 것
- 일반적으로 클래스, 인터페이스 또는 메소드에서 타입을 매개변수로 받을 때 사용
역할
- 타입 안전성 : 컴파일 타입에 타입 검사를 수행하여 잘못된 타입의 객체가 사용되는 것을 방지하고 런타임에서 발생할 수 있는 ClassCastException을 줄여줌
- 코드 재사용성 : 여러 타입에 대해 동일한 코드를 재사용
- 명시적 타입 : <> 안에 타입을 명시함으로써, 해당 클래스나 인터페이스가 어떤 타입의 객체를 처리할 것인지 명확하게 지정할 수 있음
package day3;
public class GenericExample {
public static <T extends Comparable<T>> T findMax(T[] array) {
//T : 메소드 호출 시 실제 타입으로 대체
//<T extends Comparable<T>> : T는 Comparable 인터페이스를 구현한 타입이어야 함 -> T 타입의 객체끼리 비교할 수 있음을 보장
//comparable을 상속받았기 때문에 아래에서 compareTo 사용 가능
T max = array[0]; // 첫 번째 요소로 초기화
for (T element : array) {
if (element.compareTo(max) > 0) {
max = element; // 더 큰 값으로 업데이트
}
}
return max;
}
public static void main(String[] args) {
// Integer 배열
Integer[] intArray = { 1, 3, 7, 2, 5 };
Integer maxInt = findMax(intArray); //매개변수로 배열
System.out.println("최대 Integer 값 : " + maxInt);
// String 배열
String[] strArray = { "apple", "orange", "banana", "kiwi" };
String maxStr = findMax(strArray);
System.out.println("최대 String 값 : " + maxStr);
}
}
최대 Integer 값 : 7
최대 String 값 : orange
반응형
'JAVA' 카테고리의 다른 글
[JAVA] 동기와 비동기(Synchronous / Asynchronous) 완벽 가이드 : 실행 방식, 대기 여부, 복잡성 필교 (1) | 2025.02.03 |
---|---|
Iterator, for문과의 차이 (1) | 2025.01.26 |
org.slf4j.Logger vs System.out.print (1) | 2025.01.21 |
try-catch 문과 throw Exception의 차이, 각각의 사용 (0) | 2025.01.08 |
try with resource statements (0) | 2025.01.08 |