一、实体类
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;
}
}
三、通过属性名称设置属性值
需要导入的包:
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());
}
}
四、完整工具类
import java.lang.reflect.Field;标签:java,String,Object,获取,fieldName,obj,public,属性 From: https://blog.51cto.com/abcd/6054613
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());
}
}
}