我想知道是否有可能在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
}
}
Run Code Online (Sandbox Code Playgroud)
我真的陷入了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;
}
Run Code Online (Sandbox Code Playgroud)
当然:
aField.set(this, aValue);
Run Code Online (Sandbox Code Playgroud)
首先进行类型检查:
if (!aField.getType().isInstance(aValue))
throw new IllegalArgumentException();
Run Code Online (Sandbox Code Playgroud)
但是,因为set使用错误类型的值调用将会生成一个IllegalArgumentException,这种检查不是很有用.
| 归档时间: |
|
| 查看次数: |
19214 次 |
| 最近记录: |