Consider the following snippet: From what I understand – whenever we convert Supertype -> Subtype Unchecked cast is flagged as the compiler does not know until the runtime if the type represented by the Supertype will ever match the SubType. Then over here – why is (Double) (Number)a not being flagged as the Unchecked Cast? Answer Unchecked cast is flagged