欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

反射为单级属性赋值

程序员文章站 2023-10-16 20:02:46
运行结果: ......
简单java类中的组成较为单一,在赋值中只需要通过反射考虑获取相应的field与method实例就可以实现赋值处理,课程主要讲解对于单个vo类实例化对象实现的属性赋值处理操作。

 

 1 package com.apple.demo;
 2 
 3 import java.lang.reflect.field;
 4 import java.lang.reflect.method;;;
 5 
 6 class classinstancefactory{
 7     private classinstancefactory() {}
 8     public static <t> t create(class<?> clazz,string value) {
 9         try {
10             object obj = clazz.getdeclaredconstructor().newinstance();
11             beanutils.setvalue(obj, value);
12             return (t) obj;
13         } catch (exception e) {
14             return null;
15         }
16         
17     }
18 }
19 
20 class beanutils{
21     private beanutils() {}
22     public static void setvalue(object obj, string value) {
23         string results[] = value.split("\\|");
24         for(int x=0;x<results.length;x++) {
25             string attval[] = results[x].split(":");
26             try {
27                 field field = obj.getclass().getdeclaredfield(attval[0]);
28                 method setmethod = obj.getclass().getdeclaredmethod("set"+stringutils.initcap(attval[0]), field.gettype());
29                 setmethod.invoke(obj, attval[1]);
30             } catch (exception e) {
31                 // todo auto-generated catch block
32                 e.printstacktrace();
33             } 
34         }
35     }
36 }
37 
38 class stringutils{
39     public static string initcap(string str) {
40         if(str == null || "".equals(str)) {
41             return str;
42         }
43         if(str.length() == 1) {
44             return str.touppercase();
45         }else {
46             return str.substring(0,1).touppercase()+str.substring(1);
47         }
48     }
49 }
50 
51 class emp{
52     private string ename;
53     private string job;
54     public string getename() {
55         return this.ename;
56     }
57     public void setename(string ename) {
58         this.ename = ename;
59     }
60     public string getjob() {
61         return this.job;
62     }
63     public void setjob(string job) {
64         this.job = job;
65     }
66 }
67 
68 public class javareflectdemo {
69     public static void main(string[] args) throws exception{
70         string value = "ename:smith|job:clerk";
71         emp emp = classinstancefactory.create(emp.class, value);
72         system.out.println("姓名:"+emp.getename()+"、职位:"+emp.getjob());
73     }
74 }

运行结果:

姓名:smith、职位:clerk