Findugs エラー "A boxed value is unboxed and then reboxed" が表示されます。
これはコードです:
Employee emp = new Employee()
Long lmt = 123L;
emp.setLimit(Long.valueOf(lmt));
この場合、Employeelimit
フィールドの型はLong
です。エラーの内容を教えてください。
Findugs エラー "A boxed value is unboxed and then reboxed" が表示されます。
これはコードです:
Employee emp = new Employee()
Long lmt = 123L;
emp.setLimit(Long.valueOf(lmt));
この場合、Employeelimit
フィールドの型はLong
です。エラーの内容を教えてください。
問題は、変換していることですLong
-> long
-> Long
。
したがって、バックグラウンドで:
Long.valueOf(lmt)
に変換Long
しますlong
emp.setLimit(<long>);
再び変換long
するLong
Java 5 の時点で、オートボクシングが発生します => コードは次のようになります。
Employee emp = new Employee()
Long lmt = 123L;
emp.setLimit(lmt);
あるいは:
Employee emp = new Employee()
long lmt = 123L;
emp.setLimit(lmt);
これは、 が を から にアンボックスし、 を再度取得するためにLong.valueOf(long)
発生します。あなたが言ったように、を使用する必要はありません。var を使用するだけです。lmt
Long
long
Long
limit
Long
Long.valueOf
emp.setLimit(lmt);
emp.setLimit(Long.valueOf(lmt));
Long.valueOf
値を取りますが、long
値を渡しLong
ます -- ボックス化解除を強制します。ただし、その直後にLong.valueOf
値が再ボックス化され、式はLong
再び a に評価されます。FindBugs は不要な変換チェーンLong
-> long
->を検出しLong
ます。