zoukankan      html  css  js  c++  java
  • 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());
    	}
    }

  • 相关阅读:
    十二月31日
    十二月31号
    10,28
    10,27
    十月26
    十月22
    十月21
    十月二十
    十月16
    0227 数据库的知识
  • 原文地址:https://www.cnblogs.com/yongtaochang/p/13615342.html
Copyright © 2011-2022 走看看