0

たとえば、Integer のボックス化を解除すると、Integer へのキャストが行われ、その後に intValue() が呼び出されます。プリミティブを取得するために必要な intValue() が続く Number に単純にキャストしないのはなぜですか? 当然、問題は他のすべてのラッパーのボックス化解除にまで及びます。

4

2 に答える 2

0

一つには、整数が最終であることに気づきました。整数型(への参照)の式でintValueを呼び出す場合、インスタンス型がintValueをオーバーライドするかどうかを確認する必要はありません。これは、型(参照)数値の式に必要です。

于 2012-04-26T04:25:29.910 に答える
0

Javaがあなたが提案したことをした場合、それはボックス化/ボックス化解除が精度の損失を引き起こさないという非常に重要な機能を壊します。Java では、精度を失う変換はキャスト演算子で明示的に要求する必要があるという確立された原則が既にあります。書くのは違法

final int i = 1L;

したがって、これが機能した場合は間違っています。

final int i = Long.valueOf(1);
于 2012-04-26T06:58:57.553 に答える