【Java反射】Java利用反射获取和设置对象某属性的值

这篇具有很好参考价值的文章主要介绍了【Java反射】Java利用反射获取和设置对象某属性的值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

通用工具类:

package com.zlp.util;


import com.fasterxml.jackson.annotation.JsonProperty;

import java.lang.reflect.Field;

public class ReflectUtil {
    /**
     * 反射获取对象的属性值
     *
     * @param object 对象(要遍历的对象)
     * @param targetFieldName 属性名
     * @return 属性值
     */
    public static Object getFieldValueByObject(Object object, String targetFieldName) {
        Object result = null;
        Class objClass = object.getClass();
        Field[] fields = objClass.getDeclaredFields();
        for (Field field : fields) {
            String currentFieldName = "";
            try {
                boolean hasJsonProperty = field.isAnnotationPresent(JsonProperty.class);
                if (hasJsonProperty) {
                    currentFieldName = field.getAnnotation(JsonProperty.class).value();
                } else {
                    currentFieldName = field.getName();
                }
                if (currentFieldName.toUpperCase().equals(targetFieldName.toUpperCase())) {
                    //设置属性的可访问性
                    field.setAccessible(true);
                    result = field.get(object);
                    return result;
                }
            } catch (Exception e) {
                // 异常
                System.out.println("获取对象的属性值异常:{}" + e.getMessage());
            }
        }
        return result;
    }

    /**
     * 反射设置对象的属性值
     *
     * @param object
     * @param targetFieldName
     * @param value
     */
    public static void setFieldValueByObject(Object object, String targetFieldName, Object value) {
        if (null == object) {
            return;
        }
        try {
            Class<?> objectClass = object.getClass();
            // 获取属性
            Field declaredField = objectClass.getDeclaredField(targetFieldName);
            // 设置当前属性可访问
            declaredField.setAccessible(true);
            // 设置属性值
            declaredField.set(object, value);
        } catch (Exception e) {
            System.out.println("设置对象的属性值异常:{}" + e.getMessage());
        }
    }
}

测试:

package com.zlp.test;

import com.zlp.util.ReflectUtil;

public class TestController {
    public static void main(String[] args) {
        User user = new User("1个凡夫俗子", 18);
        // 根据属性名称获取对应的值
        Object name = ReflectUtil.getFieldValueByObject(user, "name");
        System.out.println("通过反射获取name字段值:" + name.toString());
        // 根据属性名称设置值
        ReflectUtil.setFieldValueByObject(user, "age", 28);
        System.out.println("通过反射设置age字段值:" + user.getAge());
    }
}

【Java反射】Java利用反射获取和设置对象某属性的值,工具类整理,java文章来源地址https://www.toymoban.com/news/detail-786166.html

到了这里,关于【Java反射】Java利用反射获取和设置对象某属性的值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# 获取Json对象中指定属性的值

    在C#中获取JSON对象中指定属性的值,可以使用Newtonsoft.JSON库的JObject类 using Newtonsoft.Json.Linq; using System;   public class Program {     public static void Main(string[] args)     {         string json = @\\\"{             \\\'Name\\\': \\\'John\\\',             \\\'age\\\': 30,             \\\'City\\\': \\\'New York\\\'         }\\\";  

    2024年02月10日
    浏览(42)
  • Java反射获取属性名、属性类型、属性值

    反射、泛型、JDBC 等基础结合起来很多时候可以使代码功能更加强大,适合更多的场景使用 一个通过反射获得属性名、属性类型、属性值的示例: 执行,输出:

    2024年02月12日
    浏览(49)
  • 【Java】反射简介,利用反射打印一个类当中的构造函数,方法和属性。

       📝个人主页:哈__ 期待您的关注  我想要通过反射来打印如下效果的类信息。 Student类如下代码所示。  你是否有思路?如果你不了解反射的话,我来给大家简单的介绍一下反射的使用方法。 1、Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操

    2024年04月10日
    浏览(48)
  • [开发|java] java 比较两个对象的指定属性的值是否相等

    Java中比较两个对象的指定属性的值是否相等,可以使用Apache Commons Lang库中的EqualsBuilder类。EqualsBuilder提供了一种便捷的方法来比较两个对象的属性值是否相等,具体步骤如下: 通过构造器创建一个EqualsBuilder对象。 调用EqualsBuilder对象的append方法,传入需要比较的两个对象以

    2024年02月16日
    浏览(58)
  • java 使用stream累加对象中某个属性的值并返回总和

    假设有一个包含对象的List列表,每个对象都有一个属性value,可以使用Java 8中的Stream流来累加对象中某个属性的值并返回总和。以下是一些可能的实现方法: 1、使用reduce方法: 这里使用了mapToInt方法将每个对象转换为其value属性的值,然后使用reduce方法将这些值累加起来。

    2024年02月11日
    浏览(83)
  • Java反射:探索对象创建与类信息获取

    🎉欢迎来到Java学习路线专栏~Java反射:探索对象创建与类信息获取 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:Java学习路线 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习 🍹文章作者技术和水平有限

    2024年02月09日
    浏览(40)
  • Java 基础进阶篇(十七):反射概述及获取对象的方式

    反射是指对于任何一个Class类,在 “运行的时候”,不用创建对象,就可以直接得到这个类全部成分。 在运行时,可以直接得到这个类的构造器对象:Constructor 在运行时,可以直接得到这个类的成员变量对象:Field 在运行时,可以直接得到这个类的成员方法对象:Method 这种

    2024年02月07日
    浏览(40)
  • Go语言通过反射获取各种类型变量的值

    反射是程序在运行期间获取变量的类型和值、或者执行变量的方法的能力。 反射是程序在运行期间获取变量的类型和值、或者执行变量的方法的能力。 Golang 反射包中有两对非常重要的函数和类型,两个函数分别是: reflect.TypeOf 能获取类型信息 reflect.Type; reflect.ValueOf 能获取

    2024年02月15日
    浏览(55)
  • golang反射获取结构体的值和修改值

    封装好就可以直接在service层使用了【自己手动复制粘贴】 或者嫌麻烦就放到【代码生成器】中,这样就不用每次都去写这个查询了

    2024年02月15日
    浏览(44)
  • Java通过属性名获取Object对象属性值

    通过已知的属性名称,从对象里获取数据的方式 通过将Object转为Map: 通过invoke方式: 调用方式:

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包