728x90

null 은 var 나 val 변수의 값이 없다는 것을 나타내는 특별한 값이다. 자바를 포함해서 많은 프로그래밍 언어에서 null 은 흔히 크래시(crash)를 유발하는 원인이 된다.


코틀린은 컴파일 언어다. 즉 실행에 앞서 컴파일러라는 특별한 프로그램에 의해 기계어로 변환된다는 걸 뜻한다.

컴파일러는 null 가능 타입에 null 값이 지정되는지 검사한다.


런타임 에러는 컴파일러가 발견할 수 없어서 프로그램이 컴파일된 후 실행 중에 발생하는 오류다.

자바는 null 가능 타입과 불가능 타입을 구분하지 않으므로 자바 컴파일러는 null 값으로 인한 문제가 있는지 사전에 알려줄 수가 없다. 따라서 정상적으로 컴파일 된 코드가 런타임 시에 크래시될 수 있다.


null 가능 타입이 컴파일이나 런타임 에러 없이 항상 실행되도록 해야 할 경우가 있다.

이런 경우에 null 가능 타입을 안전하게 처리하기 위해 안전 호출 연산자(safe call operator)인 ?.을 사용한다.

non-null 단언 연산자(assertion operator)인 !!도 null 가능 타입에 대해 함수를 호출하기 위해 사용할 수 있다.

non-null 단언 연산자는 컴파일러가 null 발생을 미리 알 수 없는 상황이 생길 수 있을 때 사용된다.

nul 가능 변수에 !! 연산자를 사용하는 것은 위험하다.


예기치 않는 값으로 인해 우리가 의도치 않는 방향으로 프로그램이 실행될 수 있다. 따라서 코드 값을 작성할 때는 입력 값을 검사하는데 많은 노력을 기울여야 한다.


null 불가능 매개변수가 null 인자를 받지 않게 해주는 매커니즘에는 @NotNull 애노테이션이 있다.

@NotNull 애노테이션은 많은 자바 프로젝트 코드에서만 볼 수 있지만, 코틀린에서 자바 메서드를 호출할 때 특히 유용하다.


출처 : 빅너드랜치의 코틀린 프로그래밍에서 발췌 요약

http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791188621538&orderClick=LAG&Kc=







728x90
블로그 이미지

Link2Me

,