0
点赞
收藏
分享

微信扫一扫

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

一、实体类

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

举报

相关推荐

0 条评论