Int, Long, Float, Double 등등..
선언된 기본값을 보고 타입을 추론한다.
암시적 타입 변경 불가. 명시적으로만 가능하다.
val number1 = 4
val number2: Long = number1 // 컴파일 에러!
val number1 = 4
val number2: Long = number1.**toLong**() // to변환타입() 을 사용해야한다.
java는 클래스도 형변환을 명시해야하는데
(Person) 처럼
kotlin은 스마트 캐스트를 한다.
is
와 as
를 활용한다.
is
는 java의 instanceof
와 같다.
as
는 객체의 형식을 어떤것으로 간주하는지 정한다.
java 코드를 kotlin으로 변환하는 예시를 보자.
void printAgeIfPerson(Object obj) {
if(obj instanceof Person) {
Person person = (Person) obj;
System.out.println(person.getAge());
}
}
fun printAgeIfperson(obj: Any?) { // Any는 뒤에서 설명
if(obj is? Person) { // is
println(person?.age)
}
}
fun printAgeIfperson(obj: Any?) {
val person = obj as? Person //as
println(person?.age) // safe call
}
====
printAgeIfperson(null)
null