括弧をどこに置いて、キャストされたオブジェクトを自動ユンボックスなしでプリミティブタイプに簡潔に変換しますか?
-
29-09-2019 - |
質問
オートボクシングを使用すると、このステートメントは自動的に機能します。
int myPrimitive = (Integer) doIt();
しかし、私が明示的にanから変換したい場合 Integer
に int
ここ1回の行で、括弧をどこに置く必要がありますか?
解決
コンパイラがあなたのために整数のボックスを解除するか、自分でそれを行う - これは避けることはできません。
したがって、どちらかを行う必要があります
int myPrimitive = ((Integer) doIt()).intValue();
より簡単に、変更します doIt()
返品します int
あなたは対処したいと思うので int
(null-able)ではなくs Integer
s。
他のヒント
あなたはこれを行うことができます:
int myPrimitive = (int) (Integer) doIt();
しかし、あなたが言ったように、 自動不動はあなたのためにそれを得るでしょう.
a 悪い チェーンが作業をキャストすることを示す例(このコードを使用しないでください) :
Map notReallyAMap = (Map) (Object) new String();
チェーンキャストのあることは、それを使用する場所であれば、キャストが合法であり、仲介者を削除できることです。または、キャストは単にaを引き起こします ClassCastException
. 。それで 使用しないでください.
所属していません StackOverflow