1. 원시타입 변환 (Java vs Kotlin)
int number1 = 2;
long number2 = number1; // 성공
- Java에서는 int 타입이 값이 long 타입으로 암시적 변경이 된다. (단, 작은 타입 -> 큰 타입에 한해서)
val number1: Int = 2
val number2: Long = number1; // 컴파일 에러
val number3: Long = number1.toLong(); // 성공
- Kotlin에서는 원시타입의 암시적 타입 변경 시도 시, 컴파일 에러가 발생한다.
- to변환타입()을 사용해야 한다.
2. 일반타입 변환 (Java vs Kotlin)
class Person(val name: String, val age: String)
public void printPersonAge(Object obj) {
if (obj instanceOf Person) {
Person person = (Person) obj;
System.out.println(person.getAge())
}
}
- Java는 직접 다운 캐스팅을 통해 타입 변환을 해줘야 한다.
fun printPersonAge(Object obj) {
if (obj is Person) {
println(obj.age)
}
}
- Kotlin에서는 스마트 캐스트로 타입변환이 가능하다.
3. Kotlin의 특이한 타입 3가지
1) Any
- Java의 Object와 같은 역할이다. (모든 객체의 최상위 타입)
- 따라서 Any에 equals / hashCode / toString 함수가 존재한다.