Java のオブジェクトのコンパイル時型と実行時型の違いは何ですか? 私はEffective Java bookを読んでいます.Joshua Blochは、主にキャスト警告を抑制することが安全な場合があることを説明するために、アイテム26の配列インスタンスのコンパイル時の型と実行時の型について何度も言及しています。
// Appropriate suppression of unchecked warning
public E pop() {
if (size == 0)
throw new EmptyStackException();
// push requires elements to be of type E, so cast is correct
@SuppressWarnings("unchecked") E result = (E) elements[--size];
elements[size] = null; // Eliminate obsolete reference
return result;
}
ここで著者は、これらのさまざまなタイプtypes
の配列について話しています。compile time types
しかし、この質問を通じて、 vs run time types
for any type of objectの違いを理解したいと思います。