ClassCastException и «не могу привести» к ошибке компиляции
Я готовлюсь к экзамену OCA Java SE 7 Programmer, так что вопрос новичка. У меня есть пример вопроса, который я не понимаю. Следующий код компилируется, но выдает ClassCastException во время выполнения:
interface Roamable {
}
class Phone {
}
public class Tablet extends Phone implements Roamable {
public static void main(String... args) {
Roamable var = (Roamable) new Phone();
}
}
Когда я меняюRoamable var = (Roamable) new Phone();
вRoamable var = (Roamable) new String();
Я сразу получаю ошибку компиляции.
Два вопроса:
Почему приведенный выше код компилируется вообще? Телефон кажется не связанным с Roamable для меня?Почему код компилируется сnew Phone()
, но не делаетскомпилировать?new String()