第一行还是不要给代码占住了。Dead store to local variable
package com.bid.bugs;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import com.bid.vo.Person;
public class ListVoDemo {
public static void testList(){
List<Person> myList = new ArrayList<Person>();
Class<?> clazz = Person.class;
Field[] fields = clazz.getDeclaredFields();
for(int i=0; i<10; i++){
Person person = new Person();
person.setId(Long.valueOf(i));
person.setName("xiva"+i);
myList.add(person);
}
for(int i=0; i<myList.size(); i++){
Person person = new Person();
person = myList.get(i);
for(int j=0;j<fields.length;j++){
String methodName = "get" + fir2Upper(fields[j].getName());
//根据方法名获取method对象
try{
Method getMethod = clazz.getMethod(methodName);
Object reObject = getMethod.invoke(person, new Object[]{});
System.out.println(reObject);
}catch(Exception e){
e.printStackTrace();
}
}
}
}
public static void main(String[] args){
testList();
}
/**
* 首字母大写
* @param property
* @return
*/
public static String fir2Upper(String property){
String firChar = property.substring(0, 1);
String upperChar = firChar.toUpperCase();
String res = upperChar + property.substring(1);
return res;
}
}
第25行,findBugs居然给出Dead store to local variable这样的提示,开始仔细代码。
显然应该这样写,Person person = myList.get(i);之前的写法显然是不正确的,因为在list中本来就存在我们要使用的person对象,而我们在声明引用时也new了一个对象,这个new的对象是我们所不需要的。这样做对内存的消耗很大很不合理。