12.13 Type Casting and Type Checking
When compiling Kotlin code, the compiler can typically infer the type of an object. Situations will occur, however, where the compiler is unable to identify the specific type. This is often the case when a value type is ambiguous or an unspecified object is returned from a function call. In this situation it may be necessary to let the compiler know the type of object that your code is expecting or to write code that checks whether the object is of a particular type.
Letting the compiler know the type of object that is expected is known as type casting and is achieved within Kotlin code using the as cast operator. The following code, for example, lets the compiler know that the result returned from the getSystemService() method needs to be treated as a KeyguardManager object:
val keyMgr = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
The Kotlin language includes both safe and unsafe cast operators. The above cast is an unsafe...