自動ボックス化解除を使用すると、次のステートメントが自動的に機能します。
int myPrimitive = (Integer) doIt();
Integer
しかし、1 行で anから an hereに明示的に変換したい場合int
、括弧をどこに置く必要がありますか?
自動ボックス化解除を使用すると、次のステートメントが自動的に機能します。
int myPrimitive = (Integer) doIt();
Integer
しかし、1 行で anから an hereに明示的に変換したい場合int
、括弧をどこに置く必要がありますか?
あなたはこれを行うことができます:
int myPrimitive = (int) (Integer) doIt();
しかし、あなたが言ったように、自動アンボックスはあなたのためにそれを取得します.
チェーンキャストが機能することを示す悪い例 (このコードは絶対に使用しないでください):
Map notReallyAMap = (Map) (Object) new String();
チェーン キャストの利点は、どこで使用しても、キャストが合法であり、仲介者を削除できることです。またはキャストは単にClassCastException
. したがって、絶対に使用しないでください。
コンパイラが整数をボックス化解除するか、自分で行うかのいずれかです。これは避けられません。
したがって、次のいずれかを行う必要があります
int myPrimitive = ((Integer) doIt()).intValue();
もっと簡単に言えば、(null-able) ではなく sを処理したいように見えるのでdoIt()
、 an を返すように変更します。int
int
Integer