This week's book giveaway is in the Mac OS forum. We're giving away four copies of a choice of "Take Control of Upgrading to Yosemite" or "Take Control of Automating Your Mac" and have Joe Kissell on-line! See this thread for details.
I'm a newbie myself, but what I think is that the compiler lets us cast between compatible data types. It cannot know that this casting is wrong. The error is then caught at runtime. Hence ClassCastException happens at runtime.