import java.util.Collection;
public class Test
{
public static void main(String[] args)
{
Collection c = null;
Test s = null;
s = (Test) c;
}
}
В приведенном выше примере кода я приведу объект коллекции к объекту Test. (игнорируя нулевой указатель). У теста нет отношения к Collection, но эта программа пройдет все проверки во время компиляции.
Мне интересно, почему это так. Я предполагаю, что интерфейсы игнорируются, потому что они слишком сложны. У них нет общего супертипа, и каждый класс может реализовывать несколько интерфейсов, поэтому иерархия классов / интерфейсов будет слишком сложной для эффективного поиска?
Кроме этой причины, я в тупике. Кто-нибудь знает?!