import java.util.Collection;
public class Test
{
public static void main(String[] args)
{
Collection c = null;
Test s = null;
s = (Test) c;
}
}
上記のコード サンプルでは、コレクション オブジェクトを Test オブジェクトにキャストしています。(null ポインターを無視します)。Test はCollection とは何の関係もありませんが、このプログラムはすべてのコンパイル時のチェックに合格します。
これはなぜだろうと思います。私の推測では、インターフェイスは複雑すぎるため無視されます。それらには共通のスーパータイプがなく、各クラスは複数のインターフェースを実装できるため、クラス/インターフェース階層が複雑すぎて効率的に検索できませんか?
その理由以外は、私は困惑しています。誰か知っていますか?!