🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

섹션 2. 문제풀이 질문드립니다.

24.05.18 15:53 작성 24.05.18 15:56 수정 조회수 124

0

class Suttle<T extends BioUnit> 으로 상한이 정해져있고, 타입 매개변수로 받아서

public class UnitPrinter {

    static <T extends Shuttle> void printV1(T t) {
        t.showInfo();
    }

    static void printV2(Shuttle<?> t) {
        t.showInfo();
    }
}

 

UnitPrinter를 구현할 때 직접 셔틀에 있는 메서드를 호출할 수 있기 때문에 위와 같은 코드로 구현했습니다.

동작은 제대로 하지만, 혹시 문제점이 존재하는 코드인지, 실무에서 지양하는 코드 구현 방식인지 궁금해서 질문드립니다.

감사합니다.

답변 2

·

답변을 작성해보세요.

2

안녕하세요. bha4388님

이 부분을 이렇게 다루는 특별한 이유가 있다기 보다는, 제가 설명할 때 학습하시는 분들이 직관적으로 코드를 이해할 수 있도록 풀어낸 것으로 이해하시면 됩니다.

물론 실제로는 메서드가 있다면, 메서드를 호출하는 것이 더 좋겠지요?

감사합니다.

1

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.05.18

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

bha4388님의 질문에 대한 답을 제공하기 전에, 제공된 정보와 비슷한 주제를 가진 기존 질문을 찾아 봤습니다. 질문 내용이 제네릭스와 메소드 오버로딩 및 와일드카드를 활용한 방법에 대한 것으로 이해됩니다. 이에 대해 직접적으로 대응할 수 있는 구체적 내용을 담은 기존 답변을 찾았습니다.

굳이 out으로 안하고 해도 되지 않을까 싶어서요에서는 비슷한 문제 상황에 대해 논의되었습니다. 이 질문은 특정 메소드 구현에서 제네릭 타입을 명시하거나 와일드카드를 사용하는 것의 효율성에 대한 궁금증을 다루고 있습니다. 필요한 경우, 동일한 방법을 어떻게 사용하고 이유를 설명하는지, 특히 실제 코드 라인에서 <T extends BioUnit> 과 같은 제네릭 타입 제한을 활용하는 방법에 대해 토론합니다.

질문하신 부분과 관련하여, 실무에서의 코드 구현 방식에 대한 고민은 프로젝트의 요구사항, 팀 내부의 코딩 가이드라인, 그리고 유지보수성이나 확장성 등 다양한 요소에 따라 달라질 수 있습니다. 제안된 코드는 제네릭과 와일드카드를 활용하여 유연성을 제공하는 한 예시로 보이며, 실무에서 피해야 하는 명백한 이유가 없는 한 특정 상황에 따라 적절히 활용될 수 있습니다.

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

채널톡 아이콘