✅ 1. 타입 추론으로 코드 간결화
- 불필요한 타입 중복을 제거해서 코드를 짧고 읽기 쉽게 해줌
🔸 Before (Java 8):
Map<String, List<String>> map = new HashMap<String, List<String>>();
🔸 After (Java 10~):
var map = new HashMap<String, List<String>>();
👉 가독성이 훨씬 좋아짐 — 특히 복잡한 제네릭 타입에서 효과 큼.
✅ 2. 유지보수 용이
- 타입 변경 시 변수 선언도 함께 고쳐야 하는 번거로움을 줄여줌
🔸 예:
// 타입이 변경되어도 var는 그대로 사용 가능
var userList = getUsers(); // List<User>
→ 나중에 getUsers() 반환 타입이 바뀌더라도 코드를 수정할 필요 없음.
✅ 3. 일관된 선언 스타일
- 모든 지역 변수 선언을 var로 통일하면 코딩 스타일이 정리됨.
- 특히 Stream, Optional, Map.Entry 등 복잡한 선언에 유용.
for (var entry : map.entrySet()) {
System.out.println(entry.getKey());
}
✅ 4. 불필요한 캐스팅 제거와 읽기 쉬운 코드
- 타입 추론을 통해 중복 제거 + 명확성 유지.
🔸 예:
var stream = list.stream(); // 타입이 Stream<String>으로 추론됨
⚠️ 주의사항
단점/주의설명
| 타입 명시가 없어져 가독성 저하 우려 | 너무 남용하면 타입이 추론되기 어려워져 오히려 코드 이해가 어려워질 수 있음 |
| 초보자에겐 직관성 떨어질 수 있음 | 타입을 눈으로 확인할 수 없어 헷갈릴 수 있음 |
| 클래스 필드, 메서드 매개변수에는 사용 불가 | var는 오직 지역 변수에만 사용 가능 |
✅ 요약
장점설명
| ✅ 코드 간결화 | 불필요한 타입 반복 제거 |
| ✅ 유지보수 편리 | 타입 변경에 강함 |
| ✅ 가독성 향상 | 복잡한 타입을 깔끔하게 |
| ✅ 일관된 스타일 | 선언 통일성 확보 |
결론: var변수는 자바스크립트의 var와 비슷한것처럼 보이지만.. 불편한 점도 분명 존재하므로 각각의 상황에 맞게 사용을 권장..!
'Program Language > Java' 카테고리의 다른 글
| Java21 Virtual Thread(가상쓰레드) - 1 (5) | 2025.07.22 |
|---|---|
| Java sealed class란? (1) | 2025.07.16 |
| Java record란? (1) | 2025.07.16 |
| Java 12 - Switch Expressions (1) | 2025.07.16 |
| 자바 최신 버전과 1.8 버전의 차이 정리 (4) | 2025.07.15 |