9

Java は暗黙的にアップ キャストを実行できるのに、なぜ暗黙的にダウン キャストを実行しないのですか?簡単な例で説明してください。

4

1 に答える 1

15

要点は、アップキャストは常に成功するため安全であるということですが、ダウンキャストは失敗する可能性があります。

String x = getStringFromSomewhere();
Object y = x; // This will *always* work

しかし:

Object x = getObjectFromSomewhere();
String y = (String) x; // This might fail with an exception

これは「危険な」操作であるため、言語によって明示的に実行することが強制されます。基本的には、コンパイラに対して「この時点では、あなたよりも多くのことを知っている!」と言っているのです。

于 2014-04-13T11:37:12.347 に答える