反射,获取类的属性以及get方法
vo实体类:

1 public class Result { 2 3 /*** 4 * 返回结果code 5 * ok:10000 6 * error:20000 7 */ 8 private String code; 9 10 /*** 11 * 返回描述 12 */ 13 private String msg; 14 15 16 public String getCode() { 17 return code; 18 } 19 20 public void setCode(String code) { 21 this.code = code; 22 } 23 24 public String getMsg() { 25 return msg; 26 } 27 28 public void setMsg(String msg) { 29 this.msg = msg; 30 } 31 32 @Override 33 public String toString() { 34 return "Result{" + 35 "code='" + code + '\'' + 36 ", msg='" + msg + '\'' + 37 '}'; 38 } 39 }
测试类:
1 import java.lang.reflect.Field; 2 import java.lang.reflect.Method; 3 import java.lang.reflect.Modifier; 4 5 /** 6 * @author create by lxn 7 * @date 2018/4/19 11:22 8 **/ 9 public class Test { 10 11 public static void main(String[] args) throws Exception { 12 13 Result result = new Result(); 14 result.setCode("10000"); 15 result.setMsg("成功"); 16 System.out.println("属性-----"); 17 System.out.println("方法-----"); 18 Method[] declaredMethods = Result.class.getDeclaredMethods(); 19 for (int i = 0; i < declaredMethods.length; i++) { 20 String name = declaredMethods[i].getName(); 21 System.out.println(name); 22 String mod = Modifier.toString(declaredMethods[i].getModifiers()); // 取得访问权限 23 String metName = declaredMethods[i].getName(); // 取得方法名称 24 } 25 System.out.println("类名-----"); 26 String filename = Result.class.getSimpleName().toLowerCase(); 27 System.out.println(filename); 28 StringBuffer sb = new StringBuffer(); 29 sb.append("<date>"); 30 sb.append("<"+filename+">"); 31 Field[] fields = Result.class.getDeclaredFields(); 32 for (int i = 0; i < fields.length; i++) { 33 String name = fields[i].getName(); 34 sb.append("<"+name+">"); 35 Method m = Result.class.getMethod("get" +upperCase1th(name)); 36 String value = (String) m.invoke(result); 37 sb.append(value); 38 sb.append("</"+name+">"); 39 System.out.println(name); 40 } 41 sb.append("</"+filename+">"); 42 sb.append("</date>"); 43 System.out.println("拼装的xml:"+sb.toString()); 44 } 45 46 public static String upperCase1th(String str){ 47 return str.substring(0, 1).toUpperCase() + str.substring(1); 48 } 49 }
输出结果:
1 拼装的xml:<date><result><code>10000</code><msg>成功</msg></result></date>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!