也试试这个:
package SO;
import java.lang.reflect.Field;
class Test {
Integer GoodVar;
Integer BadVar;
void Func(String name, Integer value) throws IllegalArgumentException, IllegalAccessException {
Field[] fields = this.getClass().getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
if (name.equals(field.getName())) {
field.set(this, value);
}
}
}
// or a optimul way:
void Func1(String name, Integer value) throws IllegalArgumentException, IllegalAccessException, SecurityException,
NoSuchFieldException {
Field field = this.getClass().getDeclaredField(name);
field.setAccessible(true);
field.set(this, value);
}
void Init() throws IllegalArgumentException, IllegalAccessException {
Func("GoodVar", 2);
Func("BadVar", 1);
}
@Override
public String toString() {
return "[GoodVar->" + GoodVar + ",BadVar-> " + BadVar + "]";
}
}
使用示例 Main 方法:
package SO;
public class TestTest {
public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {
Test test = new Test();
System.out.println(test);
test.Func("GoodVar", 1);
test.Func("BadVar", 2);
System.out.println(test);
}
}
它打印:
[GoodVar->null,BadVar-> null]
[GoodVar->1,BadVar-> 2]