-
자바 - 와일드카드java 2025. 12. 14. 15:55
1.개요
제네릭과 와일드카드 차이에 대해 이해하는게 쉽지않았다. 따라서 두개의 차이가 뭔지를 정리해보았다.
2.제네릭, 와일드카드
서적을 보면 제네릭도 다형성을 활용해 다양한 타입을 받을 수 있고 와일드카드도 마찬가지라고 나와있다.
처음 제네릭과 와일드카드를 접했을때 똑같은건데 도데체 차이가 뭔지, 왜 자바진영에서는 똑같은걸 두개나 만들어논건지 많이 헷갈렸다.
하지만 이것만 이해하면 된다.
제네릭은 다형성을 활용해 다양한 타입을 받을 수 있는 제네릭 타입의 변수, 제네릭 매개변수를 사용하는 메서드를
만드는것이다. 그리고 와일드 카드는 이미 제네릭으로 만들어진 매개변수를 사용하기 쉽게 변경할 수 있는 도구일 뿐이다.
다시한번 말하지만 와일드카드는 제네릭 타입이나 제네릭 메서드를 정의할 때 사용하는게 아니다.
3.제네릭 매개변수를 사용한 메서드
제네릭만을 사용해서 메서드를 생성하려면 메서드 반환타입 앞에 <T> 를 꼭 붙여야한다.
package org.src.study; public class BoxCenter { static <T> void printBox(GenericBox<T> box){ System.out.println(box.getValue()); } }public class GenericBox <T>{ private T value; public T getValue() { return value; } public void setValue(T value) { this.value = value; } }4.이미 제네릭 매개변수를 사용한 메서드를 와일드카드를 활용해서 변경
제네릭과 달리 반환타입앞에 <T> 를 붙일 필요가없다.
package org.src.study; public class BoxCenter { static void printBox(GenericBox<?> box){ System.out.println(box.getValue()); } }5.결론
와일드카드는 이미 존재하는 제네릭 코드에 유연성을 더하는 도구이며, 새로운 제네릭 타입을 정의하는 도구는 아니다
'java' 카테고리의 다른 글
자바 - 제네릭 (0) 2025.12.14 자바 컴파일,런타임과정 (0) 2024.12.21 스레드 (0) 2024.08.24 멤버 상수 final , static 알고가기 (0) 2019.12.05 자바 - 클래스,인스턴스,객체 (0) 2019.12.05