Mat*_*lly 16 java reflection eval
我希望用Java来实现一些东西:
class Foo{
private int lorem; //
private int ipsum;
public setAttribute(String attr, int val){
//sets attribute based on name
}
public static void main(String [] args){
Foo f = new Foo();
f.setAttribute("lorem",1);
f.setAttribute("ipsum",2);
}
public Foo(){}
}
Run Code Online (Sandbox Code Playgroud)
...基于变量名设置变量而不使用硬编码的变量名并且不使用任何其他数据结构.这可能吗?
Chr*_*ung 31
以下是setAttribute使用反射实现的方法(我已重命名该函数;不同的字段类型有不同的反射函数):
public void setIntField(String fieldName, int value)
throws NoSuchFieldException, IllegalAccessException {
Field field = getClass().getDeclaredField(fieldName);
field.setInt(this, value);
}
Run Code Online (Sandbox Code Playgroud)