PHpullh
학습 라이브러리/Java/var(지역 변수 타입 추론) 심화

JAVA · 기초 문법

var(지역 변수 타입 추론) 심화

var의 허용 범위와 제약사항을 정확히 이해합니다.

기초 문법중급var타입추론Java10Java11

핵심 설명

var의 허용 범위와 제약사항을 정확히 이해합니다.

Java code

import java.util.*;
import java.util.stream.*;

public class VarAdvanced {
    public static void main(String[] args) {
        // var 사용 가능한 곳
        var list = List.of(1, 2, 3);              // List<Integer>
        var map = new HashMap<String, Integer>();  // HashMap
        var stream = list.stream();                // Stream<Integer>

        // 람다에서 var (Java 11+) — 어노테이션 붙이기 가능
        list.stream()
            .map((@SuppressWarnings("unused") var x) -> x * 2)
            .forEach(System.out::println);

        // for문에서 var
        for (var i = 0; i < 10; i++) {
            // i는 int로 추론
        }

        // try-with-resources에서 var
        // var reader = new java.io.FileReader("test.txt");

        // var 사용 불가: 필드, 파라미터, 반환타입
        // 다이아몬드 연산자와 조합 시 주의
        var ambiguous = new ArrayList<>(); // ArrayList<Object>!
    }
}

학습 팁

var와 다이아몬드 연산자(<>)를 함께 쓸 때는 타입이 Object로 추론될 수 있으니 명시하세요.

주의할 점

var x = null;은 타입을 추론할 수 없어 컴파일 에러입니다. var x = (String) null;처럼 캐스팅이 필요합니다.

자주 묻는 질문

var(지역 변수 타입 추론) 심화란 무엇인가요?

var 의 허용 범위와 제약사항을 정확히 이해합니다.

var(지역 변수 타입 추론) 심화 학습 시 주의할 점은 무엇인가요?

var x = null; 은 타입을 추론할 수 없어 컴파일 에러입니다. var x = (String) null; 처럼 캐스팅이 필요합니다.