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しますlongemp.setLimit(<long>); 再び変換longするLongJava 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 を使用するだけです。lmtLonglongLonglimitLongLong.valueOf
emp.setLimit(lmt);
emp.setLimit(Long.valueOf(lmt));
Long.valueOf値を取りますが、long値を渡しLongます -- ボックス化解除を強制します。ただし、その直後にLong.valueOf値が再ボックス化され、式はLong再び a に評価されます。FindBugs は不要な変換チェーンLong-> long->を検出しLongます。