* 제네릭 (Generic)
자바에서 컬렉션 클래스, 메서드, 인터페이스 등을 정의할 때 타입을 일반화하여 사용할 수 있도록 하는 기능.
클래스나 메서드를 정의할 떄 구체적인 데이터 타입을 미리 지정하지 않고, 나중에 사용 시(컴파일시점) 타입을 결정.
=> 코드의 재사용성을 높이고, 타입 안정성 확보.
* 제네릭 타입 매개변수 (Type Parameter)
실제 타입으로 대체되기 전에 사용되는 것. ( placeholder 역할 )
- <E> (Element) : 컬렉션에서 요소를 나타내는데 사용.
- <T> (Type) : 주로 클래스나 메서드에서 사용.
- <K, V> (Key, Value) : 주로 맵(Map)과 관련된 제네릭에서 사용.
- <?> (Unbounded Wildcard) : 모든 타입 나타내는 와일드카드, 주로 메서드의 매개변수로 사용.
<? extends T> 혹은 <? super T> 방식으로도 사용 가능.
<E> (Element)
class Box<E>{
private E content;
public E getContent() {
return content;
}
public void setContent(E content) {
this.content = content;
}
}
public class GenericExample<E>{
public static void main(String[] args) {
// String 타입 인스턴스
Box<String> strBox = new Box<>();
strBox.setContent("Hello");
System.out.println(strBox.getContent()); // Hello
// Integer 타입 인스턴스
Box<Integer> intBox = new Box<>();
intBox.setContent(30);
System.out.println(intBox.getContent()); // 30
}
}
<T> (Type)
import java.util.ArrayList;
import java.util.List;
public class GenericExample2{
// 제네릭 메소드
public static <T> void printList(List<T> list) {
for (T item : list) {
System.out.println(item);
}
}
// 메인 메소드
public static void main(String[] args) {
// 문자열 리스트
List<String> strList = new ArrayList<>();
strList.add("Hello");
strList.add("World");
printList(strList); // 제네릭 메소드 실행
// Hello
// World
// 정수 리스트
List<Integer> intList = new ArrayList<>();
intList.add(10);
intList.add(20);
printList(intList); // 제네릭 메소드 실행
// 10
// 20
}
}
* 자바의 자료구조 *
https://fliphtml5.com/hkuy/hgwb
'Java > 공부공부' 카테고리의 다른 글
[자바기초] 컴포넌트와 모듈 (0) | 2024.01.16 |
---|---|
[자바기초] 자바의 자료구조 (컬렉션 프레임워크_Collection Framework) (0) | 2024.01.15 |
[자바기초] String Pool 에 대해서 (0) | 2024.01.09 |
[자바기초] 메인메소드 String[] args 에 대해서 (0) | 2024.01.08 |
[게시판 만들기 복습] (0) | 2023.08.19 |