
Java 10 부터 var 키워드가 도입되어 사용이 가능하다.
해당 키워드는 지역 변수의 타입 추론(Type Inference)을 위한 키워드 이며
변수 선언시 타입을 생략 가능하게 함.
지역 변수에만 사용 가능하며, 다음의 경우에는 사용 불가능함:
ex)
LoginResDto loginResDto = new LoginResDto(accessTokenRes, financialCodes);
var loginResDto = new LoginResDto(accessTokenRes, financialCodes);
var name;
name = "John"; // (X)
var name = "John"; // (O)
var data = null; // (X)
var data = getData(); // (O)
var arr = {1, 2, 3}; // (X)
var arr = new int[]{1, 2, 3}; // (O)
var 키워드에 대해 알아보니 음.. 꼭 써야하는지에 대해 의문점이 생긴다
가독성을 위해서 var 키워드를 쓰자니 타입 추론에 있어서 불편함이 생겨 무분별하게 사용하기엔 굳이 쓸 필요가 없어 보인다.
그러나 타입 이름이 길거나 정적 팩토리 메소드와 같은 메소드 호출인 경우엔 var 를 사용해 추론하여도 괜찮을 것 같습니다
ex)
// ORIGINAL
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
// GOOD
var outputStream = new ByteArrayOutputStream();
// ORIGINAL
BufferedReader reader = Files.newBufferedReader(...);
List<String> stringList = List.of("a", "b", "c");
// GOOD
var reader = Files.newBufferedReader(...);
var stringList = List.of("a", "b", "c");
결론 : 무분별하게 쓰지말고 적절한 곳에 사용해보자
참고 : 지역 변수 유형 추론 스타일 가이드
https://openjdk.org/projects/amber/guides/lvti-style-guide