使用Java的反射机制来简化代码并避免重复调用set方法。可以使用下面的示例代码来实现:
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Person {
private String name;
private int age;
private String address;
public Person() {}
public Person(String name, int age, String address) {
this.name = name;
this.age = age;
this.address = address;
}
public void setValues(Object ...values) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchFieldException {
Class> clazz = getClass();
Field[] fields = clazz.getDeclaredFields();
int i = 0;
for (Field field : fields) {
Method method = clazz.getDeclaredMethod("set" + capitalize(field.getName()), field.getType());
method.invoke(this, values[i++]);
}
}
private String capitalize(String s) {
if (s == null || s.length() == 0) {
return s;
}
return Character.toUpperCase(s.charAt(0)) + s.substring(1);
}
// Getter and Setter methods
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
在这个示例中,我们使用setValues方法来设置所有字段的值。该方法使用反射来获取每个字段的setter方法,然后调用该方法来设置字段的值。这样,使用该类的代码就不需要反复调用set方法来设置多个字段了,而是一次性设置所有字段的值。