我想知道在Java中是否可能有类似以下内容的东西:

public class MyClass {
    private String name;
    private Integer age;
    private Date dateOfBirth;
    // constructors, getters, setters

    public void setField(String aFieldName, Object aValue) {
        Field aField = getClass().getDeclaredField(aFieldName);
        // use: aField.set(...) with proper type handling
    }
 }

我真的陷在setField方法中,任何想法都将非常有帮助。

谢谢!

编辑:原因是我想在另一个类中有一个方法,如下所示
public static MyClass setAll(List<String> fieldNames, List<Object> fieldValues) {
    MyClass anObject = new MyClass();
    // iterate fieldNames and fieldValues and set for each fieldName
    // the corresponding field value
    return anObject;
}

最佳答案

当然:

aField.set(this, aValue);

首先进行类型检查:
if (!aField.getType().isInstance(aValue))
    throw new IllegalArgumentException();

但是由于使用错误类型的值调用set仍然会生成IllegalArgumentException,因此这种检查不是很有用。

10-07 14:38