反射与简单java类(单级VO操作原理)
一、反射与单级类操作
如果说现在有一个简单Java类,那么这个简单Java类中的属性按照原始的做法一定要通过setter才可以设置,取得肯定继续使用getter(不关注此处)。
二、范例:基本程序
typescript
package cn.mldn.vo;
public class Emp {
private String ename;
private String job;
// Getter and Setter methods
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
@Override
public String toString() {
return "Emp{ename='" + ename + "', job='" + job + "'}";
}
}
这样操作太麻烦,假设一个类中存在有几十个属性,那么要写几十次的setter方法。
如果想要它可以简化一下,例如,给你一个字符串,格式"属性名称:内容|...",能够按照这样的形式将内容全部设置到属性里面。
typescript
package cn.mldn.action;
import cn.mldn.vo.Emp;
public class EmpAction {
private Emp emp = new Emp(); // 修正对象创建语法
public void setValue(String value) { // 增加参数以使用传入的字符串
// 解析字符串并设置属性
if (value != null) {
String[] parts = value.split("\|");
for (String part : parts) {
String[] keyValue = part.trim().split(":");
if (keyValue.length == 2) {
String key = keyValue[0].trim();
String val = keyValue[1].trim();
if ("emp.ename".equals(key)) {
emp.setEname(val);
} else if ("emp.job".equals(key)) {
emp.setJob(val);
}
}
}
}
}
public Emp getEmp() {
return emp;
}
}
反射操作VO
TestDemo
EmpAction
名称: -empo Emp ;
操作方法:+ setValue(): void ;
- getEmp(): Emp ;
Emp
名称: -ename : String ;
-job: String;
操作方法:+ setEname():void
- setJob(): void+
+getEname(): String
+getJob():String
具体流程如下图所示
通过本程序可以实现任意的简单Java类的属性设置。