java 反射工具类 ReflectHelper
来源:互联网 发布:绿色上网过滤软件 编辑:程序博客网 时间:2024/05/16 08:36
package com.util;
import java.lang.reflect.Field;
/**
* @author Administrator
* 反射工具
*/
public class ReflectHelper {
/**
* 获取obj对象fieldName的Field
* @param obj
* @param fieldName
* @return
*/
public static Field getFieldByFieldName(Object obj, String fieldName) {
for (Class<?> superClass = obj.getClass(); superClass != Object.class; superClass = superClass
.getSuperclass()) {
try {
return superClass.getDeclaredField(fieldName);
} catch (NoSuchFieldException e) {
}
}
return null;
}
/**
* 获取obj对象fieldName的属性值
* @param obj
* @param fieldName
* @return
* @throws SecurityException
* @throws NoSuchFieldException
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
public static Object getValueByFieldName(Object obj, String fieldName)
throws SecurityException, NoSuchFieldException,
IllegalArgumentException, IllegalAccessException {
Field field = getFieldByFieldName(obj, fieldName);
Object value = null;
if(field!=null){
if (field.isAccessible()) {
value = field.get(obj);
} else {
field.setAccessible(true);
value = field.get(obj);
field.setAccessible(false);
}
}
return value;
}
/**
* 设置obj对象fieldName的属性值
* @param obj
* @param fieldName
* @param value
* @throws SecurityException
* @throws NoSuchFieldException
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
public static void setValueByFieldName(Object obj, String fieldName,
Object value) throws SecurityException, NoSuchFieldException,
IllegalArgumentException, IllegalAccessException {
Field field = obj.getClass().getDeclaredField(fieldName);
if (field.isAccessible()) {
field.set(obj, value);
} else {
field.setAccessible(true);
field.set(obj, value);
field.setAccessible(false);
}
}
/**
* 测试主函数
* @param args
*/
public static void main(String[] args) {
try {
Class cls = Class.forName("com.flf.entity.User");
Field field;
try {
// 得到一个类的实例
Object user = cls.newInstance();
// 调用根据字段名得到字段的方法
field = ReflectHelper.getFieldByFieldName(user, "loginname");
System.out.println(field.getName());
// 根据字段名给字段赋值
ReflectHelper.setValueByFieldName(user, "loginname","admin");
// 根据字段名获取到字段值
Object nameValue = ReflectHelper.getValueByFieldName(user, "loginname");
System.out.println(nameValue);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import java.lang.reflect.Field;
/**
* @author Administrator
* 反射工具
*/
public class ReflectHelper {
/**
* 获取obj对象fieldName的Field
* @param obj
* @param fieldName
* @return
*/
public static Field getFieldByFieldName(Object obj, String fieldName) {
for (Class<?> superClass = obj.getClass(); superClass != Object.class; superClass = superClass
.getSuperclass()) {
try {
return superClass.getDeclaredField(fieldName);
} catch (NoSuchFieldException e) {
}
}
return null;
}
/**
* 获取obj对象fieldName的属性值
* @param obj
* @param fieldName
* @return
* @throws SecurityException
* @throws NoSuchFieldException
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
public static Object getValueByFieldName(Object obj, String fieldName)
throws SecurityException, NoSuchFieldException,
IllegalArgumentException, IllegalAccessException {
Field field = getFieldByFieldName(obj, fieldName);
Object value = null;
if(field!=null){
if (field.isAccessible()) {
value = field.get(obj);
} else {
field.setAccessible(true);
value = field.get(obj);
field.setAccessible(false);
}
}
return value;
}
/**
* 设置obj对象fieldName的属性值
* @param obj
* @param fieldName
* @param value
* @throws SecurityException
* @throws NoSuchFieldException
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
public static void setValueByFieldName(Object obj, String fieldName,
Object value) throws SecurityException, NoSuchFieldException,
IllegalArgumentException, IllegalAccessException {
Field field = obj.getClass().getDeclaredField(fieldName);
if (field.isAccessible()) {
field.set(obj, value);
} else {
field.setAccessible(true);
field.set(obj, value);
field.setAccessible(false);
}
}
/**
* 测试主函数
* @param args
*/
public static void main(String[] args) {
try {
Class cls = Class.forName("com.flf.entity.User");
Field field;
try {
// 得到一个类的实例
Object user = cls.newInstance();
// 调用根据字段名得到字段的方法
field = ReflectHelper.getFieldByFieldName(user, "loginname");
System.out.println(field.getName());
// 根据字段名给字段赋值
ReflectHelper.setValueByFieldName(user, "loginname","admin");
// 根据字段名获取到字段值
Object nameValue = ReflectHelper.getValueByFieldName(user, "loginname");
System.out.println(nameValue);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
0 0
- java 反射工具类 ReflectHelper
- 反射帮助类ReflectHelper
- b3log版的反射ReflectHelper
- ReflectHelper 反射(Method,Class的应用一)
- ReflectHelper 反射(Method,Class的应用)
- java反射工具类
- java反射工具类
- Java反射工具类
- Java反射工具类
- JAVA反射工具类
- java反射工具类
- 【JAVA】反射工具类
- java反射工具类
- java 简单反射工具类
- Java反射的简明应用-反射工具类
- Java项目实战反射工具类
- Java反射获取泛型工具类
- Java反射的工具类BeanUtils
- 一些面试题
- 使用开源代码CSHA1 - A,计算文件和字符串SHA1
- mysql 学习---->存储过程
- iOS代码实践总结
- 实现一个简单的Boot loader
- java 反射工具类 ReflectHelper
- Activiti-5.18.0与springMvc项目集成和activiti-explorer单独部署Web项目并与业务数据库关联方法(AutoEE_V2实现方式)
- GCC编译及选项说明
- 关于win10驱动的问题
- iOS应用审核的通关秘籍
- windows编程之ado技术
- Android授权登录新浪微博获取用户个人信息
- C#进度条实现
- Java 载入Jar内资源问题的探究