当前位置: 移动技术网 > IT编程>开发语言>Java > 反射为单级属性赋值

反射为单级属性赋值

2019年07月21日  | 移动技术网IT编程  | 我要评论

京香朱莉娅,牟先辉,t253晚点

简单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

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网