[kotlin] 코틀린에서의 인터페이스 타입 변환 함수

코틀린은 객체 지향 프로그래밍 언어로서, 인터페이스를 사용하여 다형성을 지원합니다. 다형성을 사용하는 과정에서, 인터페이스 타입을 다른 타입으로 변환해야 할 때가 있습니다. 이때 사용하는 함수가 “타입 변환 함수”입니다.

코틀린에서는 다음과 같은 두 가지 타입 변환 함수를 제공합니다:

  1. as 키워드를 사용한 타입 변환
  2. is 키워드를 사용한 타입 체크와 스마트 캐스트

1. as 키워드를 사용한 타입 변환

as 키워드를 사용하여 인터페이스 타입을 다른 타입으로 변환할 수 있습니다. 다음은 사용법의 예시입니다:

val animal: Animal = Cat()
val cat: Cat = animal as Cat

위의 코드에서, Animal 인터페이스를 구현하는 Cat 클래스를 만들었습니다. 그리고 animal 변수는 Cat 타입으로 초기화되었습니다. 이때 animal 변수를 as 키워드를 사용하여 Cat 타입으로 변환할 수 있습니다.

타입 변환 시에 주의해야 할 점은, 타입 변환이 불가능한 경우 ClassCastException 예외가 발생할 수 있다는 점입니다. 따라서 변환 가능 여부를 먼저 확인하는 것이 좋습니다.

2. is 키워드를 사용한 타입 체크와 스마트 캐스트

is 키워드는 인터페이스 타입의 객체가 특정 클래스의 인스턴스인지 확인할 때 사용할 수 있습니다. 타입 체크 후에는 해당 객체를 해당 클래스의 타입으로 스마트 캐스트할 수 있습니다. 다음은 사용법의 예시입니다:

val animal: Animal = Dog()
if (animal is Dog) {
    animal.bark()
}

위의 코드에서, Animal 인터페이스를 구현하는 Dog 클래스를 만들었습니다. 그리고 animal 변수는 Dog 타입으로 초기화되었습니다. is 키워드를 사용하여 animal 변수가 Dog 클래스의 인스턴스인지 확인한 후, 만약 참이라면 bark() 메서드를 호출할 수 있습니다.

스마트 캐스트는 타입 체크 이후에 해당 객체를 해당 클래스의 타입으로 자동으로 캐스트해주는 기능입니다. 이를 통해 타입 변환 함수를 별도로 호출하지 않아도 됩니다.

결론

코틀린에서는 as 키워드와 is 키워드를 사용하여 인터페이스 타입을 다른 타입으로 변환하고 체크하는 함수를 제공합니다. 이를 통해 다형성을 보다 효과적으로 활용할 수 있습니다.

더 자세한 내용은 공식 문서를 참고하시기 바랍니다.