反射为单级属性赋值
程序员文章站
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
推荐阅读
-
反射为单级属性赋值
-
微信小程序 两种为对象属性赋值的方式详解
-
阿里Java学习路线:阶段 1:Java语言基础-Java语言高级特性:第24章:反射与简单Java类:课时111:单级属性赋值
-
阿里Java学习路线:阶段 1:Java语言基础-Java语言高级特性:第24章:反射与简单Java类:课时110:属性自动赋值实现思路
-
JavaScript 反射和属性赋值!
-
java利用反射机制完成JavaBean的属性赋值
-
spring为java.util.Properties类型的属性进行赋值过程解析
-
通过反射机制为对象属性赋值(转载)
-
WPF基础:(1)XMAL中为对象是属性赋值的语法
-
集合去重 (集合元素为引用类型)--- java 8 新特性 --- 根据元素单属性、多属性实现去重