interface Printable {}
class BlackInk {}
public class Main {
public static void main(String args[]) {
Printable printable = null;
BlackInk blackInk = new BlackInk();
printable = (Printable)blackInk;
}
}
Если предыдущий код скомпилирован и запущен, результатом является исключение ClassCastException по адресу printable = (Printable)blackInk;
. Но, если Printable изменен на класс, он не компилируется, потому что blackInk нельзя отнести к Printable. Почему он компилируется, когда Printable является интерфейсом?Почему он компилируется при литье в несвязанный интерфейс?
... и поэтому Гид изобрел опасные предупреждения о предупреждении – Bohemian