java-单级VO操作

要求使用字符串:“student.name:yuisama|student.age:30”创建实例化对象

Student

package cn.VO;

public class Student {
	
	private String name;
	private String age;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + "]";
	}
	
}

StudAction

package cn.VO;
import cn.util.BeanOperation;
public class StudAction {
	private Student student = new Student();
	
	public void setValue(String value)throws Exception {
		BeanOperation.setBeanValue(this,value);
	}
	
	public Student getStudent() {
		return student;
	}
}

BeanOperation

package cn.util;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class BeanOperation {
	
	private BeanOperation() {}
	
	public static void setBeanValue(Object actObj, String msg) throws Exception{
		String[] result = msg.split("\\|");
		for(int i=0;i<result.length;i++) {
			String[] tmp = result[i].split(":");
			String value = tmp[1];
			String[] tmp2 = tmp[0].split("\\.");
			String className = tmp2[0];
			String attribute = tmp2[1];
			Object curObj = getCurrentObject(actObj,className); 
			setObjectValue(curObj, attribute, value);
			
		}
	}
	
	private static void setObjectValue(Object curObj, String attribute, String value) throws Exception {
		Class<?> class1 = curObj.getClass();
		Field vField = class1.getDeclaredField(attribute);
		Method method = class1.getMethod("set"+initCap(attribute), vField.getType());
		method.invoke(curObj, value);
	}

	private static Object getCurrentObject(Object actObj, String className)throws Exception {
		Class<?> actCls = actObj.getClass();
		if(actCls.getDeclaredField(className)!=null) {
			Method getMethod= actCls.getDeclaredMethod("get"+initCap(className));
			return getMethod.invoke(actObj);
		}
		return null;
	}

	public static String initCap(String str) {
		return str.substring(0, 1).toUpperCase()+str.substring(1);
	}
	
}

Test

package cn.VO;

public class Test {
	public static void main(String[] args) throws Exception {
		StudAction sAction =new StudAction();
		sAction.setValue("student.name:yuisama|student.age:30");
		System.out.println(sAction.getStudent());
	}
}

猜你喜欢

转载自blog.csdn.net/qq_35402412/article/details/80299717
今日推荐