您的位置:首页 > 编程语言 > Java开发

JAVA反射技术应用-ReflectUtil

2013-03-26 00:00 453 查看
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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Reflect