import java.lang.reflect.Field;public class ReTest
{
public static void main(String[] args) throws Exception{
P p=new P();
changeValue(p);
} /*
*@ changeValue
*改变对象的值
*/
public static void changeValue(Object obj) throws Exception{
Field[] fields=obj.getClass().getFields();
System.out.println(fields.length);
for(Field field:fields){
if(field.getType() == String.class){
String old=(String)field.get(obj);
String ne=old.replace('a','b');
field.set(obj,ne);
System.out.println(field.getName()+ " old:"+old+" new:"+field.get(obj));
}
}
}}
//这有类有问题,为什么字段数组总是零,如果换成别的类就行了???
class Po
{
String s1="abc",s2="aee",s3="aaa";
}
{
public static void main(String[] args) throws Exception{
P p=new P();
changeValue(p);
} /*
*@ changeValue
*改变对象的值
*/
public static void changeValue(Object obj) throws Exception{
Field[] fields=obj.getClass().getFields();
System.out.println(fields.length);
for(Field field:fields){
if(field.getType() == String.class){
String old=(String)field.get(obj);
String ne=old.replace('a','b');
field.set(obj,ne);
System.out.println(field.getName()+ " old:"+old+" new:"+field.get(obj));
}
}
}}
//这有类有问题,为什么字段数组总是零,如果换成别的类就行了???
class Po
{
String s1="abc",s2="aee",s3="aaa";
}
public static void main(String[] args) throws Exception {
P p = new P();
changeValue(p);
} /*
* @ changeValue改变对象的值
*/
public static void changeValue(Object obj) throws Exception {
//getDeclaredFields 可以获取所有的Fields.而getFields只能获取public的.
Field[] fields = obj.getClass().getDeclaredFields();
System.out.println(fields.length);
for (Field field : fields) {
if (field.getType() == String.class) {
//在操作私有字段的时候需要取消"Java 语言访问检查"
if(!field.isAccessible()){
field.setAccessible(true);
}
String old = (String) field.get(obj);
String ne = old.replace('a', 'b');
field.set(obj, ne); System.out.println(field.getName() + " old:" + old + " new:"
+ field.get(obj));
}
}
}}
class P {
private String s1 = "abc", s2 = "aee", s3 = "aaa";}