inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 자바 - 중급 2편

와일드카드1

제네릭 와일드카드질문

219

H K

작성한 질문수 93

0

오랜만에 햇갈려서 제네릭 다시볼려고 영한님 찾아왔습니다.

제네릭메서드랑 와일드카드 언제쓸지 구분할때

좀더 명확한 타입이 필요할때 제네릭 타입을 쓰면 될까요 ?

좀 햇갈리네요 이부분이

강의 예시코드를 보면

Dog dog = WildCardEx.printAndReturnGeneric(dogBox); //Dog 타입

Animal animal = WildCardEx.printAndReturnWildcard(dogBox); // 부모 타입 (Animal )

 

이렇게 나와서 특별한 형 변환이 필요없을때 와일드 카드를 쓴다고 생각하면 맞는생각일까요 ?

 

java 객체지향 코딩-테스트 알고리즘

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. H K님.

제네릭과 와일드카드의 사용 시점과 이유를 혼동하실 수 있는 상황을 잘 이해합니다. 제네릭과 와일드카드는 자바에서 타입 안정성을 제공하는 동시에 유연성을 유지하기 위해 사용됩니다. 이제 각각의 사용 사례를 설명드릴게요.

  1. 제네릭(Generic): 메서드나 클래스에서 명확한 타입을 미리 지정하고 싶을 때 주로 사용합니다. 예를 들어 Dog dog = WildCardEx.printAndReturnGeneric(dogBox);와 같이 사용하면 반환되는 객체의 타입이 Dog로 명시되어 있어, 명확한 타입 정보를 필요로 할 때 유리합니다.

  2. 와일드카드(Wildcard): 다양한 타입을 처리할 수 있게 하되, 상하한 경계를 설정하여 특정 조건을 만족하는 타입만 허용하고 싶을 때 사용합니다. 예를 들어 Animal animal = WildCardEx.printAndReturnWildcard(dogBox);와 같이 사용하여, 특정 타입에 구애받지 않고 상위 클래스인 Animal 타입으로 처리할 수 있습니다. 와일드카드는 특정 타입 제한이 없을 때 유연하게 사용할 수 있는 장점을 제공합니다.

따라서, 일반적으로 코드에서 반환 타입이나 인풋 타입에 대한 구체적인 컨트롤이 필요할 때는 제네릭을 사용하고, 다양한 타입을 수용해야 하지만 타입 제한이 필요한 경우 와일드카드를 사용합니다.

강의 예시에서는 특별한 형 변환이 필요 없을 때 와일드카드를 쓰되, 반환 타입을 명확하게 지정해야 할 때는 제네릭을 사용한다는 점을 강조한 것으로 이해하시면 될 듯합니다.

관련하여 더 궁금한 점이 있으시면 댓글로 남겨주세요. 주제에 대한 기초 이해를 돕기 위해 아래 링크들을 참고하시는 것도 좋은 방법입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

제네릭 타입 매개변수 제한과 관련한 문의입니다.

0

77

3

강의가 좀 버겁다 느껴질 때 학습방법 문의

1

127

4

제네릭 반환값 및 파라미터 선언 방식의 변화 <T> T

0

56

1

new T()가 안 되는 니유

0

95

1

안녕하세요, 문제와 실행 결과가 다른 부분이 있어 제보드립니다.

0

97

2

자바 로드맵 선택 질문

0

109

2

실전 자바 중급 - 2편 후 추천 강의

0

173

2

실프로젝트에서 Java25버전 사용

0

115

1

Arrays.sort

0

66

1

블로그 작성 시, 저작권 문제에 대하여

0

164

1

중급2편 56강의 bucket.add(value); 메서드가 이해가 안됩니다.

0

93

3

pop()과 poll()의 차이

0

94

1

특정 index의 노드 조회하기 질문

0

65

2

List.of() 비어있는 불변 리스트 생성

0

80

2

문제2: 개 타입 반환

0

52

2

[리뷰] 중급2편까지 겨우 완강 했습니다.

0

109

2

문제와 풀이1 Ex2와 Ex3

0

64

2

노드 삭제시 노드 null값으로 초기화

0

74

2

강의영상에 대한 질문

0

56

1

타입 매개변수 제한

0

59

1

compareTo

0

67

1

직접 구현하는 연결리스트 3 - 추가 부분 질문있습니다

0

95

3

섹션 8-58 equals and hashcode 에서 코드가 다르게 생성됨

0

68

2

퀴즈 오류 관련 문의

0

107

1