单级VO

本文介绍了一个使用Java反射机制动态设置Bean属性值的方法。通过解析字符串配置,该方法能够逐层定位到Bean的具体属性并为其赋值,同时支持多级属性的设置。文章还提供了一个具体的例子来展示如何实现这一功能。

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


import java.lang.reflect.Field;
import java.lang.reflect.Method;
import javax.imageio.ImageTypeSpecifier;
class Emp{
private String name;
private String job;


public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
@Override
public String toString() {
return "Emp [name=" + name + ", job=" + job + "]";
}
}
class Empcation{
private Emp emp=new Emp();
public void setValue(String value) throws Exception
{
BeanOperation.setBeanValue(this,value);
}
public Object getValue()
{
return new Emp();
}
}
 class BeanOperation{

public static void setBeanValue(Object actionobject,String msg) throws Exception
{
String []result=msg.split("\\|");
for(int i=0;i<result.length;i++)
{
String []temp=result[i].split(":");
String attribute =temp[0];
String value=temp[1];

String []fields=attribute.split("\\.");
Object currentObject=getObject(actionobject,fields[0]);
        setObjectvalue(currentObject,fields[1],value);
}
}
public static String initCap(String string)
{
return string.substring(0,1).toUpperCase()+string.substring(1);
 
}
public static Object getObject(Object obj,String attribute) throws Exception
{
String methodName="get"+initCap(attribute);
Field field =obj.getClass().getDeclaredField(attribute);
if(field==null)
{
field=obj.getClass().getField(attribute);
; }
if(field==null)
{
return null;
}
Method method=obj.getClass().getMethod(methodName);
return method.invoke(obj);
}
public static void setObjectvalue(Object obj,String attribute,String value) throws Exception
{
Field field=obj.getClass().getDeclaredField(attribute);
if(field==null)
{
field=obj.getClass().getField(attribute);
}
if(field==null)
{
return ;
}
String method="set"+initCap(value);
Method methodName1=obj.getClass().getMethod(method,field.getType());
methodName1.invoke(obj);
}
   
}
 


public class Test{
public static void main(String[] args) throws Exception {
String Value ="emp.ename:yuisama|emp.job:Java Coder";
Empcation empcation=new Empcation();
empcation.setValue(Value);
System.out.println(empcation.getValue());



}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值