package birunet.spring.util;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class GetterSetter<T> {
/**
* java反射bean的get方法
*
* @param claz
* @param fieldName属性名
* @return
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public Method getGetter(Class claz, String fieldName) {
StringBuilder sb = new StringBuilder();
sb.append("get").append(fieldName.substring(0, 1).toUpperCase())
.append(fieldName.substring(1));
try {
Class[] types = new Class[] {};
return claz.getMethod(sb.toString(), types);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* java反射bean的set方法
*
* @param claz
* @param fieldName属性名
* @return
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public static Method getSetter(Class claz, String fieldName) {
try {
Class[] parameterTypes = new Class[1];
Field field = claz.getDeclaredField(fieldName);
parameterTypes[0] = field.getType();// 返回参数类型
StringBuilder sb = new StringBuilder();
sb.append("set").append(fieldName.substring(0, 1).toUpperCase())
.append(fieldName.substring(1));
Method method = claz.getMethod(sb.toString(), parameterTypes);
return method;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 执行set方法
*
* @param t执行对象
* @param fieldName属性名
* @param value值
*/
public void invokeSetter(T t, String fieldName, Object value) {
Method method = getSetter(t.getClass(), fieldName);
try {
method.invoke(t, new Object[] { value });
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 执行get方法
*
* @param t执行对象
* @param fieldName属性名
*/
public Object invokeGetter(T t, String fieldName) {
Method method = getGetter(t.getClass(), fieldName);
try {
return method.invoke(t, new Object[0]);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* @param args
*/
// public static void main(String[] args) {
// GetterSetter<SMUser> gs = new GetterSetter<SMUser>();
// SMUser user = new SMUser();
// for (int i = 0; i < 33; i++) {
// gs.invokeSetter(user, "userId", "11");
// System.out.println(gs.invokeGetter(user, "userId"));
// }
// }
}
java 反射getter setter 方法
最新推荐文章于 2025-02-19 14:07:25 发布
本文介绍了一种利用Java反射机制实现Bean属性的Get与Set操作的方法。通过编写通用的Getter与Setter工具类,可以方便地获取和设置Bean对象的属性值。此工具类能够动态生成对应的getter和setter方法,并调用这些方法来读取和修改Bean对象的属性。

805

被折叠的 条评论
为什么被折叠?



