如何修复findbugs“方法访问具有恒定索引的列表或数组”发现的错误

时间:2018-09-05 06:09:08

标签: java spring findbugs

java代码:

p.setCode((String) fileds[1]);
p.setTitle((String) fileds[2]);
p.setLogo((String) fileds[3]);
p.setMaxBorrowAmt((Integer) fileds[4]);
p.setMinBorrowAmt((Integer) fileds[5]);

fileds []是对象数组,由Spring-Data-JPA创建以从3个不同的表中进行选择;

@Query(
   value="select a.id,a.code,b.title,b.logo,c.max from tableA a left join TableB b left join TableC c where ... ",
   nativeQuery = true
)
List<Object[]> findSomething();

发现错误警告:

方法访问具有恒定索引的列表或数组

此方法使用常量整数索引访问数组或列表。通常,这是一个错字,其中打算使用循环变量。但是,如果特定列表索引表示不同的特定事物,那么也许用具有有意义访问器的一流对象替换该列表将使代码不那么脆弱。

我应该如何解决此错误?

2 个答案:

答案 0 :(得分:0)

创建自定义类

public class CustomClass{
private String code;
private String title;
// rest goes here 
//all setter getter 
}

,然后将方法签名List<Object[]> findSomething();替换为List<CustomClass> findSomething();

然后使用下面的代码捕捉访问listItem。

p.setCode(listItem.getCode());
p.setTitle(listItem.getTitle());

答案 1 :(得分:0)

改用最终的整数常量

namespace fs = std::experimental::filesystem;