首页 > 编程语言 >java通过属性名称获取属性值或设置属性值

java通过属性名称获取属性值或设置属性值

时间:2023-02-13 19:32:11浏览次数:42  
标签:java String Object 获取 fieldName obj public 属性

一、实体类

public class MessageBean {
private int code = 200; // 编码
private String message = "";// 信息

public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}

二、通过属性名称获取属性值

需要导入的包:

import java.lang.reflect.Method;

实现方法:

/**
* 根据属性名获取java对象的属性值,对象中必须要有对应的getXxx()方法
*
* @param obj 要获取值的对象
* @param fieldName 要获取值的属性名称
* @return
*/
public static Object getFieldValueByName(Object obj, String fieldName) {
try {
String firstLetter = fieldName.substring(0, 1).toUpperCase();
String getter = "get" + firstLetter + fieldName.substring(1);
Method method = obj.getClass().getMethod(getter, new Class[] {});
Object value = method.invoke(obj, new Object[] {});
return value;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

java通过属性名称获取属性值或设置属性值_java

三、通过属性名称设置属性值

需要导入的包:

import java.lang.reflect.Field;

实现方法:

  /**
* 动态给Java对象指定的属性赋值
*
* @param obj 要设置值的对象
* @param fieldName 要设置值的属性名称
* @param value 要设置的值
*/
public static void setFieldValueByName(Object obj, String fieldName, Object value) {
try {
// 获取obj类的字节文件对象
Class<? extends Object> c = obj.getClass();
// 获取该类的成员变量
Field field = c.getDeclaredField(fieldName);
// 取消语言访问检查
field.setAccessible(true);
// 给变量赋值
field.set(obj, value);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}

java通过属性名称获取属性值或设置属性值_java_02

四、完整工具类

import java.lang.reflect.Field;
import java.lang.reflect.Method;

import com.qfx.common.vo.MessageBean;

/**
* Java对象操作工具类
*
*/
public class ToolJava {
public static void main(String[] args) {
MessageBean messageBean = new MessageBean();
messageBean.setCode(1001);
messageBean.setMessage("一帆风顺");

// 动态获取值
Object obj = getFieldValueByName(messageBean, "message");
System.out.println(obj);

// 动态设置值
setFieldValueByName(messageBean, "message", "心想事成");

System.out.println(messageBean.getMessage());
}

/**
* 根据属性名获取java对象的属性值,对象中必须要有对应的getXxx()方法
*
* @param obj 要获取值的对象
* @param fieldName 要获取值的属性名称
* @return
*/
public static Object getFieldValueByName(Object obj, String fieldName) {
try {
String firstLetter = fieldName.substring(0, 1).toUpperCase();
String getter = "get" + firstLetter + fieldName.substring(1);
Method method = obj.getClass().getMethod(getter, new Class[] {});
Object value = method.invoke(obj, new Object[] {});
return value;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

/**
* 动态给Java对象指定的属性赋值
*
* @param obj 要设置值的对象
* @param fieldName 要设置值的属性名称
* @param value 要设置的值
*/
public static void setFieldValueByName(Object obj, String fieldName, Object value) {
try {
// 获取obj类的字节文件对象
Class<? extends Object> c = obj.getClass();
// 获取该类的成员变量
Field field = c.getDeclaredField(fieldName);
// 取消语言访问检查
field.setAccessible(true);
// 给变量赋值
field.set(obj, value);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}

java通过属性名称获取属性值或设置属性值_java_03

标签:java,String,Object,获取,fieldName,obj,public,属性
From: https://blog.51cto.com/abcd/6054613

相关文章

  • java数组基础
    数组初始化就是给数组元素分配内存,并为每个元素赋初始值。初始化数组有两种方式:静态初始化(事先知道数组里存储那些数据)int[]c=newint[]{1,2,3,4,5,6};动态初始化......
  • Java基础语法
    注释注释是写在程序中对代码进行解释说明的文字,方便自己和他人查看,以便理解程序的IDEA中的快捷键是行注释CTRL/和块注释CTRLSHIFT/packagecom.wushf.note;publicc......
  • JAVA的列表上移下移操作实现
     这里的currentTypePriority表示当前移动的排序值nextTypePriority表示要移动的后一个排序值比如1、2、3、4、52要移动到5前面=》1、3、4、2、5那么这里的curren......
  • [JavaScript]内置对象Number初识
    学习:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/NumberNumber类型可以表示整型和浮点型。123===123.0;//trueNumber......
  • 026_测试_加载测试专用属性
        ......
  • java 日期工具类
    packagecom.jd.rc.custom.oper.bff.common;importcom.jd.fastbe.framework.client.support.exception.BusinessException;importcom.jd.fastbe.framework.client.su......
  • 操作数组对象中的某个属性获得一个新的数组对象
    letarr=[{name:'张三',hobby:"抽烟,喝酒,烫头"},{name:'李四',hobby:"打麻将,蹦迪,烫头"}......
  • 30个Javascript知识点总结,总有你不会的!
    最近重温了一遍红宝书,发现一些比较好玩的写法,很多东西日常都在用,但是发现还会有不一样的写法,结合一些日常工作中使用的方法,为大家总结一篇日常经常使用可能还不知道的点,希......
  • abp6.0获取currentuser的值
    在host的启动项目里面,MedicalClusterHttpApiHostModule里面增加```AbpClaimTypes.UserId=JwtClaimTypes.Subject;AbpClaimTypes.UserName=JwtClaimTypes.P......
  • Java 生成 32位 UUID
    Java生成32位UUIDUUID:UniversallyUniqueIdentifier通用唯一识别码现在很多数据库的主键id,由原来的int自增,改为UUID表示。因为UUID本身不可能重复,线程安全,完美......