Tony Hoare, the inventor of the quicksort algorithm, who introduced the concept of the null reference in 1965, called it his billion dollar mistake. Unfortunately, we have to live with null references as they are present in the JVM, but Kotlin introduces some functionality to make it easier to avoid some common mistakes.
Kotlin requires that a variable that can assigned to null be declared with ?:
var str: String? = null
If this is not done, the code will not compile. This next example would result in a compile-time error:
var str: String = null
Kotlin has much more than this to help in the fight against null pointer exceptions, and there is a full discussion of nulls and null safety in Chapter 7, Null Safety, Reflection, and Annotations.
Regarding type checking and casting, if a reference to an instance is declared as some general A type, but we want...