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

桃桃桃*_*桃桃子 5 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]);
Run Code Online (Sandbox Code Playgroud)

fields[] 是对象数组,它由 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();
Run Code Online (Sandbox Code Playgroud)

发现错误警告:

方法访问具有常量索引的列表或数组

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

我应该如何修复这个错误?

Sne*_*tel -2

创建自定义类

public class CustomClass{
private String code;
private String title;
// rest goes here 
//all setter getter 
}
Run Code Online (Sandbox Code Playgroud)

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

并使用下面的代码快照访问 listItem。

p.setCode(listItem.getCode());
p.setTitle(listItem.getTitle());
Run Code Online (Sandbox Code Playgroud)