反射-作业题

本文介绍如何使用Java反射API遍历并修改对象中所有String类型的成员变量,将特定字符进行替换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将一个对象的中的所有String类型的成员变量所对应的字符串内容中的"b"改为"a"。

public class ReflectPoint {

    private int x;

    public int y;

    public String str1="ball";

    public String str2="basketball";

    public String str3="itcast";

    public ReflectPoint(int x, int y) {

       super();

       this.x = x;

       this.y = y;

    }

   

    public String toString(){

       return str1+" "+str2+" "+str3;

      

    }

}

 

 

 

import java.lang.reflect.Constructor;

import java.lang.reflect.Field;

import java.lang.reflect.InvocationTargetException;

 

public class ReflectTest {

       public static void main(String[] args) throws IllegalArgumentException,

       IllegalAccessException {

              ReflectPoint pt1 = new ReflectPoint(3,5);

              changStringValue(pt1);

              System.out.println(pt1);

       }

              private static void changStringValue(Object obj) throws

              IllegalArgumentException,

              IllegalAccessException{

                    

                     Field[] fields=obj.getClass().getFields();

                     for(Field field:fields){

                            if(field.getType()==String.class){

                                   //此处用==号更好,因为String 类只有一份字节码,应该是完全相同的

                                   String oldValue=(String)field.get(obj);

                                   String newValue=oldValue.replace("b","a");

                                   field.set(obj, newValue);

                            }

                     }

              }

             

       }

      

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值