括弧をどこに置いて、キャストされたオブジェクトを自動ユンボックスなしでプリミティブタイプに簡潔に変換しますか?

StackOverflow https://stackoverflow.com/questions/3909698

質問

オートボクシングを使用すると、このステートメントは自動的に機能します。

int myPrimitive = (Integer) doIt();

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

役に立ちましたか?

解決

コンパイラがあなたのために整数のボックスを解除するか、自分でそれを行う - これは避けることはできません。

したがって、どちらかを行う必要があります

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

より簡単に、変更します doIt() 返品します int あなたは対処したいと思うので int(null-able)ではなくs Integers。

他のヒント

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

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

しかし、あなたが言ったように、 自動不動はあなたのためにそれを得るでしょう.

a 悪い チェーンが作業をキャストすることを示す例(このコードを使用しないでください) :

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

チェーンキャストのあることは、それを使用する場所であれば、キャストが合法であり、仲介者を削除できることです。または、キャストは単にaを引き起こします ClassCastException. 。それで 使用しないでください.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top