class Parent
class Child extends Parent
val p = new Parent
val c = new Child
p.isInstanceOf[Parent] // Return true
p.isInstanceOf[Child] // false,
c.isInstanceOf[Child] // Return true
c.isInstanceOf[Parent] // true as Child is a subtype of Parent
Итак, у нас выше поведение. Теперь из того, что я читал о Scala еще во времена моего самого Scala, Any - это супертип всех классов. Все типы значений, Int, Boolean, Double и т. Д., Являются подтипами Any .
Таким образом, любое значение подтипов, таких как Int, Boolean и т. Д., Также будет иметь тип Any. Но наоборот не будет правдой.
val i: Int = 10
i.isInstanceOf[Int] // true
i.isInstanceOf[Any] // true
val a: Any = 5
a.isInstanceOf[Any] // true. Everything until now, inline with the Parent, Child example above
a.isInstanceOf[Int] // Returns true as well. How? a is of Any type and Int is a Subtype of Any, then how is a value of Any type, also of type Int.