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类的属性设置。

相关推荐
FrankYoou14 分钟前
Jenkins 与 GitLab CI/CD 的核心对比
java·docker
麦兜*40 分钟前
Spring Boot启动优化7板斧(延迟初始化、组件扫描精准打击、JVM参数调优):砍掉70%启动时间的魔鬼实践
java·jvm·spring boot·后端·spring·spring cloud·系统架构
KK溜了溜了1 小时前
JAVA-springboot 整合Redis
java·spring boot·redis
天河归来1 小时前
使用idea创建springboot单体项目
java·spring boot·intellij-idea
weixin_478689761 小时前
十大排序算法汇总
java·算法·排序算法
码荼1 小时前
学习开发之hashmap
java·python·学习·哈希算法·个人开发·小白学开发·不花钱不花时间crud
IT_10242 小时前
Spring Boot项目开发实战销售管理系统——数据库设计!
java·开发语言·数据库·spring boot·后端·oracle
ye902 小时前
银河麒麟V10服务器版 + openGuass + JDK +Tomcat
java·开发语言·tomcat
武昌库里写JAVA2 小时前
Oracle如何使用序列 Oracle序列使用教程
java·开发语言·spring boot·学习·课程设计
做题不NG3 小时前
大模型应用开发-LangChain4j
java