JavaBean的toString方法工具类
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.LinkedHashMap;
public class ToStringUtils {
public static final String GET = "get";
/**
* 返回JavaBena的toString方法值
*
* @param t
* @return String
*/
public static <T> String getToString(T t) {
String result = null;
Field[] fields = t.getClass().getDeclaredFields(); // 获取实体类的所有属性,返回Field数组
LinkedHashMap<String, Object> map = new LinkedHashMap<String, Object>();
for (Field field : fields) {
field.setAccessible(true);
String name = field.getName(); // 获取属性的名字
Object value = getAttributeValue(t, name);// 获取属性值
map.put(name, value != null ? value : null);
name = null;
value = null;
}
result = map.toString();
fields = null;
map.clear();
map = null;
return result;
}
/**
* 返回JavaBena的toString方法值(只有属性的情况下)
*
* @param t
* @return String
*/
public static <T> String getToString1(T t) {
String result = null;
Field[] fields = t.getClass().getDeclaredFields(); // 获取实体类的所有属性,返回Field数组
LinkedHashMap<String, Object> map = new LinkedHashMap<String, Object>();
for (Field field : fields) {
try {
field.setAccessible(true);
map.put(field.getName(), field.get(t));
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
result = map.toString();
fields = null;
map.clear();
map = null;
return result;
}
/**
* 通过反射,用属性名称获得属性值
*
* @param t
* @param attributeName
* @return Object
*/
private static <T> Object getAttributeValue(T t, String attributeName) {
Object result = null;
Method method = null;
try {
StringBuffer methodName = new StringBuffer(GET);
methodName.append(attributeName.substring(0, 1).toUpperCase());
methodName.append(attributeName.substring(1));
method = t.getClass().getMethod(methodName.toString());
methodName = null;
result = method.invoke(t);
method = null;
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
}
public class BaseBean {
@Override
public String toString() {
// TODO Auto-generated method stub
return ToStringUtils.getToString(this);
}
}
public class TestBean extends BaseBean {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class Test {
public static void main(String[] args) {
TestBean testBean = new TestBean();
System.out.println("默认值:" + testBean.toString());
testBean.setId(10010);
testBean.setName("李四");
System.out.println("赋值之后:" + testBean.toString());
}
}
JavaBean的toString方法工具类的更多相关文章
- Json与javaBean之间的转换工具类
/** * Json与javaBean之间的转换工具类 * * {@code 现使用json-lib组件实现 * 需要 * json-lib-2.4-jdk15.jar * ...
- Java—API/Obiect类的equals toString方法/String类/StringBuffer类/正则表达式
API Java 的API(API: Application(应用) Programming(程序) Interface(接口)) 就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了起来 ...
- Java 字符串格式化和工具类使用
前言 我们在做项目时候经常需要对字符串进行处理,判断,操作,所以我就总结了一下java 字符串一些常用操作,和推荐比较好用我在自用的工具类,毕竟有轮子我们自己就不用重复去写了,提供开发效率,剩下的时间 ...
- 如何在SpringBoot当中上传多个图片或者上传单个图片 工具类
如何在SpringBoot当中上传多个图片[上传多个图片 ] 附赠工具类 1.SpringBoot 上传图片工具类 public class SpringUploadUtil { /*** * 上传图 ...
- Java开发常用Util工具类-StringUtil、CastUtil、CollectionUtil、ArrayUtil、PropsUtil
字符串工具类 StringUtil.java package com.***.util; /** * StringUtil * @description: 字符串工具类 **/ public clas ...
- [18/11/30] toString()方法 和 equals() 方法
一. toString() 方法 Object类中定义有public String toString()方法,其返回值是 String 类型 默认: return getClass().getNam ...
- AQS的子类在各个同步工具类中的使用情况
AQS AQS(AbstractQueuedSynchronizer)是 java.util.concurrent的基础.J.U.C中宣传的封装良好的同步工具类Semaphore.CountDownL ...
- java工具类–自动将数据库表生成javabean
最近和数据库的表打交道挺多的,因为暂时做的是接口活. 在这过程中发现要把表转换成对应的javabean类型,字段少的表还行,如果不小心碰到几十个字段的他妈的写起来就有点麻烦了,万一碰到几百个的呢,那不 ...
- 把xml转成javabean的工具类
import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import javax.x ...
随机推荐
- 网络转载——java接口的概念
为什么会出现接口? 接口的出现是为了扩展java中的类继承的单调性.这样使得功能更加丰富. 接口关键字? 定义接口interface,实现一个接口 implements 什么接口呢? 接口是一种特殊 ...
- js中join函数的使用方法(js输出html标签)
var arr = ['item 1', 'item 2', 'item 3', ...]; var list = '<ul><li>' + arr.join('</li ...
- java文件名更改一直是false,看看是否是文件打开没有关
// 更改文件名称 public static void chenckFileName(String oldFile, String newFileName) { File file = new Fi ...
- 17.linux下root用户与普通用户
默认安装完成之后并不知道root用户的密码,那么如何应用root权限呢? (1)sudo 命令 这样输入当前管理员用户密码就可以得到超级用户的权限.但默认的情况下5分钟root权限就失效了. (2 ...
- 关于int类型的赋值语句正确的有
A.char a=65; 对 B.int a=12.0; C.int a=12.0f; D.int a=(int)12.0 对
- Appium常见问题(持续更新)
1.Original error: Could not parse activity from dumpsys 命令行:adb shell dumpsys cpuinfo 报:service du ...
- Ansible playbook API 开发 调用测试
Ansible是Agentless的轻量级批量配置管理工具,由于出现的比较晚(13年)基于Ansible进行开发的相关文档较少,因此,这里通过一些小的实验,结合现有资料以及源码,探索一下Ansible ...
- vim中替换命令
在VIM中进行文本替换: 1. 替换当前行中的内容: :s/from/to/ (s即substitude) :s/from/to/ : 将当前行中的 ...
- hive中分析函数window子句
hive中有些分析函数功能确实很强大,在和sum,max等聚合函数结合起来能实现不少功能. 直接上代码演示吧 原始数据 channel1 2016-11-10 1 channel1 2016-11-1 ...
- Loadrunner开发测试脚本
Loadrunner开发测试脚本 开发测试脚本可以通过录制,也可以手动开发,建议能录制的尽量录制,省时省力,不能录制的只能费力自己开发了,具体看项目情况来决定. 使用Loadrunner开发脚本过程中 ...