You can cast any object to an interface type, provided the class is not final.

If S is a class type: ... If T is an interface type: ... If S is not a final class, then the cast is always correct at compile time (because even if S does not implement T, a subclass of S might). and "If S is a class type: ... If T is a class type, then S and T must be related classes-that is, S and T must be the same class, or S a subclass of T, or T a subclass of S; otherwise a compile-time error occurs."