In Smart Casting, we generally use
!is operator to check the type of variable, and compiler automatically casts the variable to the target type, but in explicit type casting we use
Explicit type casting can be done using :
- Unsafe cast operator: as
- Safe cast operator: as?
Unsafe cast operator : as
Manually, we use type cast operator as to cast a variable to target type.
In below program, variable
str1 of string type cast to target type using as operator.
It works fine
There might be possiblility that we can not cast variable to target type and it throws an exception at runtime, thats why it is called as unsafe casting.
When Integer type is used to cast to String type, then it throws ClassCastException.
Exception in thread “main” java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.String
We can not cast a nullable string to non-nullabe string, and it throws an exception TypeCastException.
Exception in thread “main” kotlin.TypeCastException: null cannot be cast to non-null type kotlin.String
Hence, we have to use target type also as nullable String so that type casting throws no exception.
Safe cast operator: as?
Kotlin also provides a facility of type casting using safe cast operator
as?. If casting is not possible it returns null instead of throwing an ClassCastException exception.
Here is an example, in which we are trying to cast
Any type of string value which is initially known by programmer into nullable string then it works fine. When we initialize the
Any with Integer value and try to cast into nullable string then this type casting is not possible and returns null to
Safe casting null 11
- Kotlin Data Types
- Hello World program in Kotlin
- Kotlin | Retrieve Collection Parts
- Destructuring Declarations in Kotlin
- Kotlin labeled continue
- Introduction to Kotlin
- Kotlin Type Conversion
- Kotlin Exception Handling | try, catch, throw and finally
- Kotlin if-else expression
- Kotlin Environment setup for Command Line
- Kotlin constructor
- Kotlin Environment setup with Intellij IDEA
- Kotlin Nested class and Inner class
- Type Aliases vs Inline Classes
- Kotlin Variables
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.