さまざまなビジネス上の理由から、クラスの 1 つでいくつかの静的 ID を保持したいと考えています。それらはもともとありましたが、それらを同等にすることができるようにint
変更したかったのです(つまり、NPEを回避します)Integer
MY_ID.equals(..)
それらを整数に変更すると、switch ステートメントでエラーが発生します。ドキュメントによると、スイッチ内では整数は問題ないはずです。
引用する
[Switch] は、列挙型 (列挙型で説明)、String クラス、および特定のプリミティブ型をラップするいくつかの特別なクラス (Character、Byte、Short、および Integer (数値と文字列で説明)) でも機能します。
以下の私のコードでは、 i が a のint
場合、コンパイルされます。それがである場合、それはInteger
それを言っていませんconstant expression is required
。私はやってみ.intValue()
ましたが、これもうまくいきません。
私は本当に愚かですか?または、ドキュメントを完全に読み違えていますか?
private static final Integer i = 1;
@Test
public void test() {
switch(mObj.getId()){
case i: //do something
default: //do something default
}
}
ここでのポインタに感謝します。当分の間、私はそれらを維持してint
やっていますnew Integer(myint).equals(...)