京香朱莉娅,牟先辉,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
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
浅析我对 String、StringBuilder、StringBuffer 的理解
使用IDEA搭建SSM框架的详细教程(spring + springMVC +MyBatis)
Springboot整合freemarker 404问题解决方案
引入mybatis-plus报 Invalid bound statement错误问题的解决方法
网友评论