작성
·
22
0
오랜만에 햇갈려서 제네릭 다시볼려고 영한님 찾아왔습니다.
제네릭메서드랑 와일드카드 언제쓸지 구분할때
좀더 명확한 타입이 필요할때 제네릭 타입을 쓰면 될까요 ?
좀 햇갈리네요 이부분이
강의 예시코드를 보면
Dog dog = WildCardEx.printAndReturnGeneric(dogBox); //Dog 타입
Animal animal = WildCardEx.printAndReturnWildcard(dogBox); // 부모 타입 (Animal )
이렇게 나와서 특별한 형 변환이 필요없을때 와일드 카드를 쓴다고 생각하면 맞는생각일까요 ?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. H K님.
제네릭과 와일드카드의 사용 시점과 이유를 혼동하실 수 있는 상황을 잘 이해합니다. 제네릭과 와일드카드는 자바에서 타입 안정성을 제공하는 동시에 유연성을 유지하기 위해 사용됩니다. 이제 각각의 사용 사례를 설명드릴게요.
제네릭(Generic): 메서드나 클래스에서 명확한 타입을 미리 지정하고 싶을 때 주로 사용합니다. 예를 들어 Dog dog = WildCardEx.printAndReturnGeneric(dogBox);
와 같이 사용하면 반환되는 객체의 타입이 Dog
로 명시되어 있어, 명확한 타입 정보를 필요로 할 때 유리합니다.
와일드카드(Wildcard): 다양한 타입을 처리할 수 있게 하되, 상하한 경계를 설정하여 특정 조건을 만족하는 타입만 허용하고 싶을 때 사용합니다. 예를 들어 Animal animal = WildCardEx.printAndReturnWildcard(dogBox);
와 같이 사용하여, 특정 타입에 구애받지 않고 상위 클래스인 Animal
타입으로 처리할 수 있습니다. 와일드카드는 특정 타입 제한이 없을 때 유연하게 사용할 수 있는 장점을 제공합니다.
따라서, 일반적으로 코드에서 반환 타입이나 인풋 타입에 대한 구체적인 컨트롤이 필요할 때는 제네릭을 사용하고, 다양한 타입을 수용해야 하지만 타입 제한이 필요한 경우 와일드카드를 사용합니다.
강의 예시에서는 특별한 형 변환이 필요 없을 때 와일드카드를 쓰되, 반환 타입을 명확하게 지정해야 할 때는 제네릭을 사용한다는 점을 강조한 것으로 이해하시면 될 듯합니다.
관련하여 더 궁금한 점이 있으시면 댓글로 남겨주세요. 주제에 대한 기초 이해를 돕기 위해 아래 링크들을 참고하시는 것도 좋은 방법입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.