我得到一个固定大小的数组,比如说20。
我必须在bean属性中设置每个数组元素,因此我的bean有20个属性。
这是我目前的做法:
Object[] record = { "0", "1", "2", ...."19" };
for (int j = 0; j < record.length; j++) {
if (j == 0) {
bean.setNo((String) record[j]);
}
if (j == 1) {
bean.setName((String) record[j]);
}
if (j == 2) {
bean.setPhone((String) record[j]);
}
// so on and so forth...
}
这就是我如何从数组中设置bean的每个属性。
这里我有20个数组元素。
所以要设置第20个元素,它检查20个条件。性能问题..
赞赏任何优化技术......
提前致谢...
答案 0 :(得分:2)
这样做的一种方法是:
试试这个::
Object[] record = BeanList.get(i);
int j = 0;
bean.setNo((String) record[j++]);
bean.setName((String) record[j++]);
bean.setPhone((String) record[j++]);
.............. ................ .............
答案 1 :(得分:2)
设置bean值的另一种方法。这需要commons-beanutils.jar作为依赖。
import java.lang.reflect.InvocationTargetException;
import org.apache.commons.beanutils.BeanUtils;
public class BeanUtilsTest {
// bean property names
private static String[] propertyNames = { "name", "address" };
public static void main(String[] args) throws IllegalAccessException,
InvocationTargetException {
// actual values u want to set
String[] values = { "Sree", "India" };
MyBean bean = new MyBean();
System.out.println("Bean before Setting: " + bean);
// code for setting values
for (int i = 0; i < propertyNames.length; i++) {
BeanUtils.setProperty(bean, propertyNames[i], values[i]);
}
// end code for setting values
System.out.println("Bean after Setting: " + bean);
}
public static class MyBean {
private String name;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "MyBean [address=" + address + ", name=" + name + "]";
}
}
}
答案 2 :(得分:-1)
你可以使用Switch代替这些if语句
for( int j =0; j < record.length; j++) {
switch (j){
case 1 : bean.setNo((String) record[j]);break;
case 2 : bean.setNo((String) record[j]);break;
....
....
}
}