0

自動ボックス化解除を使用すると、次のステートメントが自動的に機能します。

int myPrimitive = (Integer) doIt();

Integerしかし、1 行で anから an hereに明示的に変換したい場合int、括弧をどこに置く必要がありますか?

4

2 に答える 2

4

あなたはこれを行うことができます:

int myPrimitive = (int) (Integer) doIt();

しかし、あなたが言ったように、自動アンボックスはあなたのためにそれを取得します.

チェーンキャストが機能することを示す悪い例 (このコードは絶対に使用しないでください):

Map notReallyAMap = (Map) (Object) new String();

チェーン キャストの利点は、どこで使用しても、キャストが合法であり、仲介者を削除できることです。またはキャストは単にClassCastException. したがって、絶対に使用しないでください

于 2010-10-11T20:29:39.940 に答える
2

コンパイラが整数をボックス化解除するか、自分で行うかのいずれかです。これは避けられません。

したがって、次のいずれかを行う必要があります

int myPrimitive = ((Integer) doIt()).intValue();

もっと簡単に言えば、(null-able) ではなく sを処理したいように見えるのでdoIt()、 an を返すように変更します。intintInteger

于 2010-10-11T20:47:21.613 に答える