私はopenJPA(ちょっと古いバージョン1.2)を使用していて、私がquery.getResultList()
をキャストするたびに警告を受け取ります。私はその特定の警告を取り除くことができますが、私は次の例のようにリストを返す必要があるとき、私は同じことを行うことができないので、私は前の行に@SuppressWarnings("unchecked")
を使用します。タイプunsafety:FooからBarへのチェックされていないキャスト。 JPAのもの
// @SuppressWarnings("unchecked") I DON'T WANT TO DO THIS HERE
public <T> List<T> findByQuery(String queryString) {
myEntityManager.createQuery(queryString);
@SuppressWarnings("unchecked") // I WANT TO DO IT HERE
return (List<T>)query.getResultList();
}
ここで私は何ができる:
...
@SuppressWarnings("unchecked")
List<T> result = query.getResultList();
return result;
}
ですが、sonarはリストを変数に格納してはいけませんが、すぐにそれを返すべきだと不平を言います。ここで私の最高のオプションは何ですか?
メソッドの値を最初のスニペットで割り当てずに返すので、メソッド自体に@SuppressWarningsを追加する必要があります。あなたはソナーの違反または最初のコードスニペットのどちらかで生きなければなりません "私はここにこれをしたくありません" –
ソナーの周りをばかにするだけで、汚い解決策もあります。 "result.size();"を追加します。ソナーの違反を取り除くために結果を返す前に。メソッドレベルでアノテーションを付けて1番目のスニペットに固執することをおすすめします。 –
Checkstyleをソナーで使用していませんか? checkstyleエラーを無効にすることができます。 –