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

相关推荐
androidwork8 分钟前
Android LinearLayout、FrameLayout、RelativeLayout、ConstraintLayout大混战
android·java·kotlin·androidx
陈小桔37 分钟前
限流算法java实现
java
黑客老李42 分钟前
JavaSec | SpringAOP 链学习分析
java·运维·服务器·开发语言·学习·apache·memcached
勤奋的知更鸟1 小时前
Java编程之原型模式
java·开发语言·原型模式
叶 落1 小时前
[Java 基础]数组
java·java 基础
KK溜了溜了1 小时前
JAVA-springboot log日志
java·spring boot·logback
珂朵莉MM1 小时前
2021 RoboCom 世界机器人开发者大赛-高职组(初赛)解题报告 | 珂学家
java·开发语言·人工智能·算法·职场和发展·机器人
香蕉炒肉2 小时前
Java优化:双重for循环
java·开发语言
黄雪超2 小时前
JVM——打开JVM后门的钥匙:反射机制
java·开发语言·jvm
有梦想的攻城狮2 小时前
spring中的@RabbitListener注解详解
java·后端·spring·rabbitlistener