文档章节

java反射覆写toString方法实现输出实体类属性值

指尖残雪
 指尖残雪
发布于 2016/05/22 23:56
字数 261
阅读 29
收藏 0
覆写java实体类toString的方法,使用反射技术输出全部属性的值(包括父类)。
前提条件:两个满足一个就行
1、实体类都继承同一个父类,在父类中覆写toString方法
2、在需要的实体类中覆写toString方法(如果实体类比较多重复代码也多)


ReflectToStringUtil.toStringUtil(this,true|false);
this表示当前对象,直接传入this就可以不需要更改。
TRUE|FALSE:是否输出包含null的属性。如果是TRUE,则类属性值为空的内容页输出,否则只输出类属性不为空的内容。

工具类:


package org.dyb.util;

import java.lang.reflect.Field;

public class ReflectToStringUtil {

    static StringBuffer sb = new StringBuffer();

    public static String toStringUtil(Object clazs,boolean isOutputNull) {

        getParamAndValue(clazs, clazs.getClass(), isOutputNull);

        return sb.toString();
    }

    private static void getParamAndValue(Object clazs, Class<?> clazz,boolean isOutputNull) {
        
        
        Class<?> sc = clazz.getSuperclass();
        Field[] sfields = sc.getDeclaredFields();
        if (sfields.length > 0) {
            getParamAndValue(clazs, sc, isOutputNull);
        }
        Field[] fields = clazz.getDeclaredFields();
        for (Field f : fields) {
            f.setAccessible(true);
            try {
                if (null != f.get(clazs)||isOutputNull){
                    sb.append(f.getName() + "=" + f.get(clazs) + "\n");
                }
            } catch (IllegalArgumentException | IllegalAccessException e) {
                e.printStackTrace();
            }
        }
    }

}

使用:

public String toString() {
        return return ReflectToStringUtil.toStringUtil(this,false);
    }


本文转载自:http://blog.csdn.net/bq1073100909/article/details/48413337

共有 人打赏支持
指尖残雪
粉丝 7
博文 73
码字总数 0
作品 0
上海
后端工程师
Java拾遗:006 - Java反射与内省

反射 Java中提供了一套精心设计的工具集,以便编写能够动态操纵Java代码的程序,这套工具集就是反射(reflective)。 反射作用 能够分析类能力的程序称为反射,反射机制功能非常强大,甚至能...

一别丶经年
08/04
0
0
Hibernate反射DAO模式

在持久层框架中,如果我们要像简单的JDBC连接数据库那样写一个通用的Dao方法的话,那么把JDBC简单的业务逻辑搬到hibernate持久层框架中,当然是不可能的,这里主要的问题就在于hibernate持久...

zretc
2013/07/19
0
0
Thread源码分析-java8

1.Thread特性分析 守护线程Daemon 2种方式创建一个可执行线程 线程名字 线程ID 线程优先级 线程状态6种 浅拷贝 2. 类、方法、字段分析 实现接口和继承类 只实现了一个接口Runnable threadLo...

caoxiaohong1005
05/14
0
0
Guava学习笔记 第3个记录(复写的Object常用方法)

在Java中Object类是所有类的父类,其中有几个需要override的方法比如equals,hashCode和toString等方法。每次写这几个方法都要做很多重复性的判断, 很多类库提供了覆写这几个方法的工具类, G...

heroShane
2014/02/12
0
0
Guava学习笔记:复写的Object常用方法

  在Java中Object类是所有类的父类,其中有几个需要override的方法 比如equals,hashCode和toString等方法。每次写这几个方法都要做很多重复性的判断, 很多类库提供了覆写这几个方法的工具类...

pior
2015/03/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

sklearn中predict_proba用法(注意和predict的区别)

参考网址:https://blog.csdn.net/m0_37870649/article/details/79549142 # 返回预测标签 print(clf.predict(x_test)) # 返回预测属于某标签的概率 print(clf.predict_proba(x_test))...

小叮当_加V
6分钟前
0
0
docker swarm创建consul集群

version: '3.6'x-consul: &consul image: consul:latest volumes: - consul:/consulvolumes: consul:services: client: <<: *consul ports: - "8500:......

weidedong
7分钟前
0
0
Git客户端(TortoiseGit)基本使用详解

1、 环境安装 Git最新版下载地址:https://gitforwindows.org/ TortoiseGit,Git客户端,32/64位最新版及对应的语言包下载地址:https://tortoisegit.org/download/ 安装的方法,一直下一步就...

hblt-j
13分钟前
0
0
服务发现比较:Consul vs Zookeeper vs Etcd vs Eureka

这里就平时经常用到的服务发现的产品进行下特性的对比,首先看下结论: Feature Consul zookeeper etcd euerka 服务健康检查 服务状态,内存,硬盘等 (弱)长连接,keepalive 连接心跳 可配支持...

lemonLove
14分钟前
0
0
1、ElasticSearch的安装配置和使用

一、安装 按照个人习惯我习惯把自己的软件都安装到opt下 解压 tar -zxvf elasticsearch-6.3.2.tar.gz 重命名 mv elasticsearch-6.3.2.tar.gz esearch 移动 mv elasticsearch-6.3.2.tar.gz /o...

丑陋的皮囊
16分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部