反射实现对象改值
来源:互联网 发布:快拍王软件下载 编辑:程序博客网 时间:2024/04/30 11:53
/**
*
*/
package net.cloudsun.util;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import net.cloudsun.base.entity.User;
/**
* 熊浪
*/
public class ObjectNullToStringUtils {
public static Object checkFieldValueNull(Object bean) {
boolean result = true;
if (bean == null) {
return null;
}
Class<?> cls = bean.getClass();
Method[] methods = cls.getDeclaredMethods();
Field[] fields = cls.getDeclaredFields();
for (Field field : fields) {
try {
//第一种方法
field.setAccessible(true);
if (field.get(bean) == null) {
field.set(bean, "");
}
//第二种方法
// String fieldGetName = parGetName(field.getName());
// if (!checkGetMet(methods, fieldGetName)) {
// continue;
// }
// Method fieldGetMet = cls
// .getMethod(fieldGetName, new Class[] {});
// Object fieldVal = fieldGetMet.invoke(bean, new Object[] {});
// if (fieldVal != null) {
// if ("".equals(fieldVal)) {
// result = true;
// } else {
// result = false;
// }
// } else {
// field.setAccessible(true);//把private方法设置为可见,要不然会报错的
// field.set(bean, "1232");// 把null值赋值为空字符串
// }
} catch (Exception e) {
continue;
}
}
// return result 是判断是否有null或是""空值
return bean;
}
/**
* 拼接某属性的 get方法
*
* @param fieldName
* @return String
*/
public static String parGetName(String fieldName) {
if (null == fieldName || "".equals(fieldName)) {
return null;
}
int startIndex = 0;
if (fieldName.charAt(0) == '_')
startIndex = 1;
return "get"
+ fieldName.substring(startIndex, startIndex + 1).toUpperCase()
+ fieldName.substring(startIndex + 1);
}
/**
* 拼接某属性的set方法
*
* @param fieldName
* @return String
*/
public static String parSetName(String fieldName) {
if (null == fieldName || "".equals(fieldName)) {
return null;
}
int startIndex = 0;
if (fieldName.charAt(0) == '_')
startIndex = 1;
return "set"
+ fieldName.substring(startIndex, startIndex + 1).toUpperCase()
+ fieldName.substring(startIndex + 1);
}
/**
* 判断是否存在某属性的 get方法
*
* @param methods
* @param fieldGetMet
* @return boolean
*/
public static boolean checkGetMet(Method[] methods, String fieldGetMet) {
for (Method met : methods) {
if (fieldGetMet.equals(met.getName())) {
return true;
}
}
return false;
}
public static void main(String[] args) {
User user = new User();//测试类
user.setId(1);
System.out.println(ObjectNullToStringUtils.checkFieldValueNull(user));
}
}
*
*/
package net.cloudsun.util;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import net.cloudsun.base.entity.User;
/**
* 熊浪
*/
public class ObjectNullToStringUtils {
public static Object checkFieldValueNull(Object bean) {
boolean result = true;
if (bean == null) {
return null;
}
Class<?> cls = bean.getClass();
Method[] methods = cls.getDeclaredMethods();
Field[] fields = cls.getDeclaredFields();
for (Field field : fields) {
try {
//第一种方法
field.setAccessible(true);
if (field.get(bean) == null) {
field.set(bean, "");
}
//第二种方法
// String fieldGetName = parGetName(field.getName());
// if (!checkGetMet(methods, fieldGetName)) {
// continue;
// }
// Method fieldGetMet = cls
// .getMethod(fieldGetName, new Class[] {});
// Object fieldVal = fieldGetMet.invoke(bean, new Object[] {});
// if (fieldVal != null) {
// if ("".equals(fieldVal)) {
// result = true;
// } else {
// result = false;
// }
// } else {
// field.setAccessible(true);//把private方法设置为可见,要不然会报错的
// field.set(bean, "1232");// 把null值赋值为空字符串
// }
} catch (Exception e) {
continue;
}
}
// return result 是判断是否有null或是""空值
return bean;
}
/**
* 拼接某属性的 get方法
*
* @param fieldName
* @return String
*/
public static String parGetName(String fieldName) {
if (null == fieldName || "".equals(fieldName)) {
return null;
}
int startIndex = 0;
if (fieldName.charAt(0) == '_')
startIndex = 1;
return "get"
+ fieldName.substring(startIndex, startIndex + 1).toUpperCase()
+ fieldName.substring(startIndex + 1);
}
/**
* 拼接某属性的set方法
*
* @param fieldName
* @return String
*/
public static String parSetName(String fieldName) {
if (null == fieldName || "".equals(fieldName)) {
return null;
}
int startIndex = 0;
if (fieldName.charAt(0) == '_')
startIndex = 1;
return "set"
+ fieldName.substring(startIndex, startIndex + 1).toUpperCase()
+ fieldName.substring(startIndex + 1);
}
/**
* 判断是否存在某属性的 get方法
*
* @param methods
* @param fieldGetMet
* @return boolean
*/
public static boolean checkGetMet(Method[] methods, String fieldGetMet) {
for (Method met : methods) {
if (fieldGetMet.equals(met.getName())) {
return true;
}
}
return false;
}
public static void main(String[] args) {
User user = new User();//测试类
user.setId(1);
System.out.println(ObjectNullToStringUtils.checkFieldValueNull(user));
}
}
0 0
- 反射实现对象改值
- 反射实现对象拷贝
- java反射实现对象复制
- Java反射机制实现对象属性值的拷贝
- 反射实现所有实体的增删改操作(jQuery+json)
- java使用反射实现对数据库的增删改查
- R语言-对象改值
- 利用反射实现两个对象赋值
- java 反射机制实现对象复制
- 三十一、反射、C++动态对象创建实现
- Java利用反射实现对象转json
- 反射实现对象转json格式字符串
- 通过反射实现对象转JSON
- 通过反射实现对象转JSON
- Java遍历对象属性(反射实现)
- 反射获得对象的值
- 对象反射
- 利用java反射来实现输出对象的所有属性值
- c++ const类成员函数
- TextView 文字加上闪光与外层圆跟内层圆显示文字
- 用systemd命令来管理linux系统
- muduo库的学习8---TcpServer与TcpClient的基本设计---TcpServer
- 数据库备份脚本使用说明
- 反射实现对象改值
- 1-Python 安装 Matplotlib
- 【2015年年终总结】——工作中的体验
- js面向对象基础
- 2+python解析RSS(feedparser)
- muduo库的学习10---TcpServer与TcpClient的基本设计---TcpConnection建立与关闭
- iOS开发证书变成“此证书的签发者无效”解决方法
- 瀑布模型开发与敏捷开发的对比
- Erlang 连接mongoDB