When you do an explicit cast, the compiler trusts the programmer that he/she has done the cast correctly and will perform a runtime check.
ahhh.... hmmmm.... Well, within reason. If the compiler can confirm that there is no way for the explicit cast to work it will complain.
For example, if you have a reference to an object whose class type does not implement a particular interface. And the class type is declared as final, so there is no way to even subclass from the class, in order to implement that interface, then a explicit cast from that reference to an interface should fail.
Henry