• 카테고리

    질문 & 답변
  • 세부 분야

    기타 (개발 · 프로그래밍)

  • 해결 여부

    미해결

Streams builder 타입 추론이 불가능한 이유

23.01.30 16:01 작성 조회수 293

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

안녕하세요.

강의 내용 약 2분 즈음 말씀해주신 Stream builder 사용 시 다이아몬드 연산자로 타입을 지정해주어야 하는 이유에 대해 제가 이해하고 있는 것이 맞는지.. 검색으로 시원한 해답을 찾는데 어려움이 있어 질문 드립니다.

Stream.Builder<String> stringStreamBuilder = Stream.builder();
Stream<String> strings = stringStreamBuilder.add("string1").add("string2").build();
Stream<String> strings = Stream.builder().add("string1").add("string2").build();

첫 번째 코드가 두 번째 코드로 변경되면 에러가 발생하는 이유는, Stream.builder() 메소드가 실행되면 내부적으로 Stream.Builder 의 구현체인 StreamBuilderImpl 클래스가 new 연산자를 통해 생성된 후 반환됩니다.

 

제네릭에서 타입을 지정하지 않은 경우는 일반적으로 Object 타입으로 간주하지만 new 연산자를 통해 먼저 반환을 받는 첫번째 코드에서는 String 타입으로 타입 추론이 이루어집니다.

 

그렇지 않은 두 번째 코드에서는 Object 타입을 가지고 있는 StreamBuilderImpl 클래스에 String 타입의 메소드를 파라미터로 넘겨 타입 오류가 발생하는 것으로 이해하고 있습니다.

 

혹시 제가 이해하고 있는 것이 맞는지.. 혹시 틀린 부분이 있다면 지적 부탁드립니다. 감사합니다. 🥲

 

 

답변 0

답변을 작성해보세요.

답변을 기다리고 있는 질문이에요.
첫번째 답변을 남겨보세요!