通过JAVA反射机制以属性名来get或set该对象中此属性的值

业务场景:

通过一个值(例如"name")拼接get方法,获取目标对象中属性为“name”的值;
通过一个值(例如"sex")拼接set方法,为目标对象中为"sex"的属性赋值;

代码实现:

测试对象(Object):

public class Student {

    String name;

    String sex;

    //此处省略“get”与“set”方法的实现,自行代码实现或注解实现
    
}

取值(getter):
(注意异常的捕获和处理)

@SneakyThrows
public String dynamicObtainValue(String dataName, Student stu){
        //载入目标对象的路径
        Class<?> cls = Class.forName("com.aa.bb.Student");
		//拼接出get方法
        dataName = dataName.substring(0,1).toUpperCase() + dataName.substring(1);
        String methodName = "get"+dataName;
		//调用方法获取值
        Method method = cls.getDeclaredMethod(methodName);
        String name = (String)method.invoke(stu);
        //返回结果
        return name;
}

赋值(setter):
(注意异常的捕获和处理)

@SneakyThrows
public void assignment(String dataName, String content, Student stu){

        Class<?> cls = Class.forName("com.aa.bb.Student");

        dataName = dataName.substring(0,1).toUpperCase() + dataName.substring(1);
        String methodName = "set"+dataName;

        Method method = cls.getDeclaredMethod(methodName,String.class);
        method.invoke(stu,content);
}

测试(test):

	Student stu = new Student();
	assignment("name","张三",stu);
	assignment("sex","男",stu);
	System.out.println("stu.name----->"+(dynamicObtainValue("name",stu)));
	System.out.println("stu.sex----->"+(dynamicObtainValue("sex",stu)));
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值