JAVA反射技术应用-ReflectUtil
来源:互联网 发布:java jackson 编辑:程序博客网 时间:2024/06/05 15:52
public class ReflectUtil {
//不区分大小写
public static Object setFieldValueDefault(Object target, String fname,
Class ftype, Object fvalue) {
if (target == null
|| fname == null
|| "".equals(fname)
|| (fvalue != null && !ftype
.isAssignableFrom(fvalue.getClass()))) {
return target;
}
Class clazz = target.getClass();
Field[] fs = clazz.getDeclaredFields();
try {
for (int i = 0; i < fs.length; i++) {
if (fname.toLowerCase().equals(fs[i].getName().toLowerCase())) {
Method method = clazz.getDeclaredMethod("set"
+ Character.toUpperCase(fs[i].getName().charAt(0))
+ fs[i].getName().substring(1), String.class);
if (!Modifier.isPublic(method.getModifiers())) {
method.setAccessible(true);
}
method.invoke(target, fvalue);
}
}
} catch (Exception me) {
try {
Field field = clazz.getDeclaredField(fname);
if (!Modifier.isPublic(field.getModifiers())) {
field.setAccessible(true);
}
field.set(target, fvalue);
} catch (Exception fe) {
fe.getStackTrace();
}
}
return target;
}
//区分大小写
public static Object setFieldValue(Object target, String fname, Class ftype,
Object fvalue) {
if (target == null
|| fname == null
|| "".equals(fname)
|| (fvalue != null && !ftype
.isAssignableFrom(fvalue.getClass()))) {
return target;
}
Class clazz = target.getClass();
Field[] fs = clazz.getDeclaredFields();
try {
Method method = clazz.getDeclaredMethod("set"
+ Character.toUpperCase(fname.charAt(0))
+ fname.substring(1), String.class);
if (!Modifier.isPublic(method.getModifiers())) {
method.setAccessible(true);
}
method.invoke(target, fvalue);
} catch (Exception me) {
try {
Field field = clazz.getDeclaredField(fname);
if (!Modifier.isPublic(field.getModifiers())) {
field.setAccessible(true);
}
field.set(target, fvalue);
} catch (Exception fe) {
fe.getStackTrace();
}
}
return target;
}
public static Object getFieldValue(Object target, String fname, Class ftype) {
if (target == null || fname == null || "".equals(fname)) {
return null;
}
Class clazz = target.getClass();
try {
Method method = clazz.getDeclaredMethod("get"
+ Character.toUpperCase(fname.charAt(0))
+ fname.substring(1), ftype);
if (!Modifier.isPublic(method.getModifiers())) {
method.setAccessible(true);
}
return method.invoke(target);
} catch (Exception me) {
try {
Field field = clazz.getDeclaredField(fname);
if (!Modifier.isPublic(field.getModifiers())) {
field.setAccessible(true);
}
return field.get(target);
} catch (Exception fe) {
fe.getStackTrace();
}
}
return null;
}
}
- JAVA反射技术应用-ReflectUtil
- ReflectUtil反射工具类2
- Android反射工具类ReflectUtil
- Java 反射技术及其应用
- ReflectUtil
- ReflectUtil
- java反射技术的应用(一)
- java反射技术的应用(二)
- java之反射技术应用(二)
- java之反射技术及其应用
- java反射技术应用--灵活导出excel
- C# 反射技术应用
- C# 反射技术应用
- C# 反射技术应用
- C#反射技术应用
- .Net反射技术应用—与Java互操作
- Java 反射与代理技术及应用解读
- java反射技术
- 汽车专业词汇
- 终结PHP中文乱码的问题
- Struts1之Action小结
- yii配置
- 各类IE版本的小差异(编程中需要注意)
- JAVA反射技术应用-ReflectUtil
- MillerRobin(概率测素数)
- 错误 1 类型“System.Web.Mvc.ModelClientValidationRule”同时存在于“c:\Progra
- POJ2689
- 选择排序
- 三种SQL分页查询的存储过程
- Android 中的拿来主义(编译,反编译,AXMLPrinter2,smali,baksmali)!
- 使用opencv编写的删除面积过小的轮廓的函数
- ln: 正在创建连至‘arch-s3c2410’的符号链接‘include/asm-arm/arch’: 不允许的操作make: *** [include/asm-arm/.arch] 错误 1