java打印类属性值_打印Java对应中每个类的属性和它对应的
值
我们在打印⽇志的过程中,经常需要复写⽗类的toString⽅法,如果⼀个⼀个的去拼接属性名和属性值,那么代码会显得⾮常冗余,重复性很⼤。我们完全可以按照反射来快速获取。
⽐如我们的bean类,核⼼在于toString⽅法。
public class Bean {
private String name = "abc";
private String age = "15";
private boolean success = true;
private Long money = 5000L;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public Long getMoney() {
return money;
}
public void setMoney(Long money) {
< = money;
}
@Override
public String toString(){
// 要打印出来的⽇志
StringBuffer result = new StringBuffer();
try {
// 获得当前类的Class
Class extends Bean> clazz = Class();
// 获取当前类的全部属性
Field [] fields = DeclaredFields();
for (Field field : fields) {
// 遍历属性得到属性名
String fieldName = Name();
// 如果是⽤于序列化的直接过滤掉
if ("serialVersionUID".equals(fieldName)) {
continue;
}
// 判断属性的类型,主要是区分boolean和其他类型
Class> type = Type();
// boolean的取值是is,其他是get
String methodName = (TypeName().equals("boolean")?"is":"get") + fieldName.substring(0,1).toUpperCase()
+ fieldName.substring(1, fieldName.length());
Method method;
java.lang.Object resultObj;
// 通过⽅法名得到⽅法对象
method = Method(methodName);
// 得到这个⽅法的返回值
resultObj = method.invoke(this);
java的tostring方法// 将属性名和它对应的值进⾏匹配打印
if (resultObj != null && !"".equals(resultObj)) {
result.append("[").
append(fieldName).append("]").append(resultObj).append(" ");
}
}
} catch (SecurityException | NoSuchMethodException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
e.printStackTrace();
}
String();
}
}
测试代码:
public static void main(String[] args) {
Bean bean = new Bean();
System.out.String());
}
执⾏结果:
[name]abc [age]15 [success]true [money]5000
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论