125java

反射与简单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类的属性设置。

相关推荐
雨中飘荡的记忆2 分钟前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
心之语歌2 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
华仔啊4 小时前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端
ray_liang4 小时前
用六边形架构与整洁架构对比是伪命题?
java·架构
Ray Liang5 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Java水解5 小时前
Java 中间件:Dubbo 服务降级(Mock 机制)
java·后端
SimonKing9 小时前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean10 小时前
Jackson View Extension Spring Boot Starter
java·后端
Seven9711 小时前
剑指offer-79、最⻓不含重复字符的⼦字符串
java
皮皮林55120 小时前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java