本帖最后由 何拴绪 于 2012-6-13 13:41 编辑
想利用反射修改成员变量中的字符串中的字符,结果打印的还是原字符串,就各位帮忙看看这代码哪里有错:- import java.lang.reflect.Field;
- public class ReflectDemo {
- String str1 = "reflect";
- String str2 = "reflectdemo";
- public static void main(String[] args) throws Exception {
- ReflectDemo rd = new ReflectDemo();
- changeValue(rd);
- }
- private static void changeValue(Object obj) throws Exception {
- Field[] fields = obj.getClass().getFields();
- for (Field field : fields) {
- if (field.getType() == String.class) {// 字节码使用== 使用的是一份字节码
- String oldValue = (String) field.get(obj);
- String newValue = oldValue.replace('r', 'R');
- field.set(obj, newValue);
- }
- }
- System.out.println(obj);
- }
- // 重写toString方法
- public String toString() {
- return str1 + " " + str2;
- }
- }
复制代码 |