[Java] 형식추론

조민서·2023년 8월 26일
0

JAVA

목록 보기
15/16

형식 추론 (Type Inference)

Map<String, String> map = new HashMap<String, String>(); // 1번
Map<String, String> map = new HashMap<>(); // 2번

1번 코드 대신 2번 코드로 대체할 수 있다.
이 기능은 자바 7에서 추가된 다이아몬드 연산자 기능이다.
이 기능 덕분에 개발자는 문법에서 파라미터 형식을 알 수 있는 상황이라면 제네릭의 형식 파라미터 (위 코드에서 String, String)를 생략할 수 있다.


지역 변수 형식 추론

자바 10부터는 형식 추론이 지역변수 까지 확장 적용된다.

Person boy = new Person(); // 1-1
Business business = new Business(boy); // 1-2

var boy = new Person(); // 2-1
var business = new Business(boy); // 2-2

위 코드처럼 var 키워드로 형식 추론을 구현할 수 있다.
2-1, 2-2에서 boy 변수는 Person 이라는 정적 형식, business 변수는 Business 라는 정적 형식을 갖는다.

❗️ 주의
var 키워드를 사용한 변수는 final이 아니다.

final Person boy = new Person();
var boy = new Person();

예를 들어 위 두 개의 코드는 서로 의미가 다르다.
final을 선언한 boy 변수는 재할당할 수 없다.
var로 선언한 boy 변수는 다른 값을 재할당 할 수 있다.

final var boy = new Person()
재할당을 원하지 않으면 final을 붙이자.

또한 개발자는 코드를 구현하는 것보다 읽는 데 더 많은 시간을 소비하므로, 코드를 쉽게 구현하는 것보다 코드를 쉽게 읽을 수 있느냐가 더 중요하다.
따라서 var을 이용한 이득은 주관적이므로 자기 주관에 맞게 사용하자.

profile
내 두뇌는 휘발성 메모리다. 😪

0개의 댓글