var Type -Java

choizz156·2022년 9월 7일
0

Java Basic

목록 보기
6/10

var

  • var 타입을 사용하면 var이 붙은 변수의 타입이 추론된다.
  • var a = "hello world"라고 했을 때, 오른쪽의 초기화 값으로 부터 a의 타입을 추론한다.
  • 오직 초기화 값을 가지는 지역 변수에서만 사용 가능하다.
  • 멤버 변수나 메서드 파라미터, 리턴 타입 등에서는 사용하지 못한다.
var list = new ArrayList<String>();    // infers ArrayList<String>
var stream = list.stream();            // infers Stream<String>
var path = Paths.get(fileName);        // infers Path
var bytes = Files.readAllBytes(path);  // infers bytes[]
  • 런 타임 오버헤드가 없고 컴파일 타임에 이미 변수의 타입이 추런되어 후에 바뀌지 않는다.

var을 사용할 수 있는 경우

  1. 지역변수 선언 시
  2. 향상된 for 문
List<String> myList = Arrays.asList("a", "b", "c");
for (var element : myList) {...}  // infers String
  1. 기존 for 문
for (var counter = 0; counter < 10; counter++) {...} // infers int
  1. try with resource
try (var input =
new FileInputStream("validation.txt")) {...}   // infers FileInputStream

var 타입을 사용할 수 없는 경우

  1. var은 초기화 없이 사용할 수 없다.
  2. var은 null값으로 초기화 될 수 없다.
  3. 지역 변수가 아닌 곳에서 사용할 수 없다.
  4. 람다 표현에서는 명시적으로 타입을 지정해줄 필요가 있다.
**var** p = (String s) -> s.length() > 10; // error: lambda expression needs an explicit target-type
  1. 배열에서는 타입을 지정해 주어야 한다.
var  arr = { 1, 2, 3 }; 
// error: array initializer needs an explicit target-type

reference
https://www.baeldung.com/java-10-local-variable-type-inference#illegal-use-of-var

profile
조금씩 성장하는 개발자...!

0개의 댓글