java反射

该博客详细介绍了如何在Java中通过实体类的getter方法与配置文件中的字典项进行交互。核心代码展示了一种方式,通过反射获取实体类的方法并执行,确保配置项不为空,从而保证数据的完整性和正确性。内容涉及到Java反射机制和对象属性的访问操作。
摘要由CSDN通过智能技术生成

实体

public class ConsultantEntity {

    private String userName;
    private String phone;
    private String title;
    private String content;
    private String orgName;
    private String orgCode;
    private String regionCode;
    private String regionName;
    private String userId;
    private String socialCreditCode;


    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getOrgName() {
        return orgName;
    }

    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }

    public String getOrgCode() {
        return orgCode;
    }

    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }

    public String getRegionCode() {
        return regionCode;
    }

    public void setRegionCode(String regionCode) {
        this.regionCode = regionCode;
    }

    public String getRegionName() {
        return regionName;
    }

    public void setRegionName(String regionName) {
        this.regionName = regionName;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getSocialCreditCode() {
        return socialCreditCode;
    }

    public void setSocialCreditCode(String socialCreditCode) {
        this.socialCreditCode = socialCreditCode;
    }
}

配置文件
在这里插入图片描述
核心代码

 for (DictionaryItem dictionaryItem : dictionaryItems) {
            Method declaredMethod = consultantEntity.getClass().getDeclaredMethod(dictionaryItem.getName(), null);
            Object result = declaredMethod.invoke(consultantEntity, null);
            if (result == null){
                throw new Exception(dictionaryItem.getValue());
            }
        }

1、先使用getDeclaredMetho()获取实例的方法
第一个参数为实例方法名
第二参数是方法的参数类型,是一个数组,无参方法直接传null

2、拿到方法,执行方法
使用invoke()方法执行
第一个参数是实例,
第二参数是执行方法的参数

举个例子:
dictionaryItem.getName()从配置中读取方法名getUserId,实例的**getUserId()是无参方法,所以getDeclaredMetho()**返回了实例的

public String getUserId() {
        return userId;
    }

然后**declaredMethod.invoke(consultantEntity, null);执行getUserId()**方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值