这个我也试过,貌似通过 getFields()方法只能反射到被public 修饰的字段,而没有被public修饰的字段需要通过getDeclaredFields()获取,再通过设置setAccessible(true)才能获取。
这样写就都可以获取了。- public static void changeStringValue(Object obj) throws Exception{
- Field[] fields = obj.getClass().getDeclaredFields();
- for(Field field : fields){
- field.setAccessible(true);
- if(field.getType()==String.class){
- String oldValue = (String)field.get(obj);
- String newValue = oldValue.replace('b', 'a');
- field.set(obj, newValue);
- System.out.println(field.get(obj));
- }
- }
- }
复制代码 |