타입 추론이란?
- 개발자가 변수의 타입을 정확하게 명시하지 않아도 컴파일러가 알아서 이 변수의 타입을 대입된 리터럴로 추론하는 것
- Java 10부터 제공
- 사용 예시
Java에서의 var의 특징
- 초기화 값이 있는 지역 변수로만 선언 가능하다.
- 멤버 변수, 메소드의 파라미터, 리턴 타입으로는 사용할 수 없다.
- var는 키워드가 아니다. (= 변수명으로도 사용 가능하다.)
- 런타임 오버헤드가 없다.
- var로 선언된 변수는 중간에 타입이 절대 변경되지 않는다.
- null이 들어갈 수 없다.
- <> 연산자는 같이 쓸 수 없다.
- 예시
- List
- 예시
- 람다 표현식에는 명시적인 타입 지정이 필요하다.
런타임 오버헤드가 없는 이유
- Java에서는 컴파일 시점에 var 변수의 초기화 값을 보고 추론에서 바이트코드에 명시적으로 자료형을 결정한다.
- 미리 자료형을 결정해두기 때문에 타입추론 변수를 읽을 때 마다 타입을 알아내기위한 추가 연산을 하지 않는다.
(JavaScript와 달리 var로 선언된 변수가 중간에 자료형이 변경되지 않는 이유)