인프런 커뮤니티 질문&답변

index님의 프로필 이미지
index

작성한 질문수

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

문제와 풀이1

생성 시 타입추론 질문합니다.

작성

·

41

0

List<Integer> list1 = new ArrayList<>();
List<Integer> list2 = new ArrayList<Integer>();

객체의 타입에는 들어갈 데이터의 타입을 명시해 주어야 하지만

인스턴스를 생성할 때는 타입추론으로 인해 다이아몬드에 타입을 입력하지 않아도 되는 부분에서 궁금증이 생겼습니다.

 

타입추론은 인스턴스 생성 시 개발자의 편의를 위해 몇 자 줄여주는 정도인가요? 아니면 다른 부가적인 장점이 있는지 궁금합니다.

 

컴파일러가 타입을 추론하기 위한 시간이 추가적으로 소요될 것 같은데(고려할 정도는 아니겠지만...) 오히려 타입추론으로 최적화 적인 방면으로 이점도 있을까요?..

답변 1

0

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

질문해주신 타입 추론과 관련하여 추가적인 설명을 드리겠습니다.

자바의 “다이아몬드 연산자(<>)“는 코드의 가독성을 높이고, 중복된 타입 정보를 줄이는 데에 중점을 둡니다. 예를 들어, List<Integer> list1 = new ArrayList<>(); 와 같은 선언에서는 “다이아몬드 연산자”가 컴파일러에게 이 인스턴스가 List<Integer>임을 명확하게 합니다. 이렇게 되면 코드의 가독성이 높아지며 중복 입력을 피할 수 있어 개발자의 편의를 돕습니다.

타입 추론의 장점:

  1. 코드의 간결성: 타입을 매번 명시하지 않아도 되므로 코드가 간결해지고 오류 가능성이 줄어듭니다.
  2. 가독성 향상: 적은 코드량으로 인해 코드가 더욱 쉽게 읽히고 유지보수에 유리합니다.
  3. 컴파일러 최적화: 컴파일러가 타입을 자동으로 추론하므로, 개발자는 이에 대한 부담을 덜고 코드에 집중할 수 있습니다. 다만 이로 인한 컴파일 속도의 변화는 일반적으로 사용자의 체감상 느낄 수 없고, 최적화 효과는 상대적으로 미미합니다.

이러한 부가적인 장점으로 인해 자바는 타입 추론 기능을 강화해 왔습니다. 다만, 어떤 타입이 명확하지 않을 경우에는 명시적으로 타입을 지정해 주시는 것도 가독성 측면에서의 중요성을 갖습니다.

추가로, 타입 추론 기능은 편의성을 제공하지만, 함수나 메서드를 정의할 때 명확한 타입을 지정해 주시는 것이 항상 의도한 결과를 얻을 수 있는 방법이라는 점도 명심해 주세요.

관련하여 도움이 될 만한 자바의 제네릭 관련 질문들을 아래에서 찾아보실 수 있습니다:
- List list = new ArrayList<>();가 사용 가능한 이유

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

index님의 프로필 이미지
index

작성한 질문수

질문하기