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 分钟前
多线程---CAS,JUC组件和线程安全的集合类
java·开发语言
不懂的浪漫7 分钟前
mqtt-plus 架构解析(五):错误处理与 ErrorAction 聚合策略
java·spring boot·后端·物联网·mqtt·架构
呼啦啦56114 分钟前
C++vector
java·c++·缓存
花千树-01015 分钟前
MCP + Function Calling:让模型自主驱动工具链完成多步推理
java·agent·react·mcp·toolcall·harness·j-langchain
Benszen17 分钟前
Linux容器:轻量级虚拟化革命
java·linux·运维
凸头21 分钟前
Lombok 包底层浅析
java
不懂的浪漫23 分钟前
mqtt-plus 架构解析(三):Payload 序列化与反序列化,为什么要拆成两条链
java·spring boot·物联网·mqtt·架构
卷福同学29 分钟前
去掉手机APP开屏广告,李跳跳2.2下载使用
java·后端·算法
漫霂39 分钟前
二叉树的翻转
java·数据结构·算法
语戚39 分钟前
力扣 51. N 皇后:基础回溯、布尔数组优化、位运算全解(Java 实现)
java·算法·leetcode·力扣·剪枝·回溯·位运算