JavaBean 一键toString

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_19306415/article/details/81949662

javaBean自己一个变量一个变量是很单调、繁琐的事情,特别是变量很多的时候这对我本人来说,是一种很痛苦的事情。
今天,我们就用java反射机制,来实现javaBean一键toString;

首先,新建一个 JavaBeanToString 类:
这里写图片描述

然后再创建一个测试类:

/**  测试类   **/
public class Bean {
    private String name;
    public int year;

    public void setName(String name) {
        this.name = name;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public int getYear() {
        return year;
    }

    public String getName() {
        return name;
    }
}

接下来,我们在JavaBeanToString里面添加一下代码:

public class JavaBeanToString {
    /**
     * 对象转string
     */
    public static String toString(Object o) throws IllegalAccessException {
        if(o!=null) {//判断传过来的对象是否为空
            StringBuilder sb = new StringBuilder("[");//定义一个保存数据的变量
            Class cs = o.getClass();//获取对象的类
            Field[] fields = cs.getDeclaredFields();//反射获取该对象里面的所有变量
            for (Field f : fields) {//遍历变量
                f.setAccessible(true);//强制允许访问私有变量
                Object value = f.get(o);//获取传递过来的对象 对应 f 的类型
                value = value == null ? "null" : value;//判断获取到的变量是否为空,如果为空就赋值字符串,否则下面代码会异常
                sb.append(f.getName() + ":\"" + value.toString() + "\" ");// f.getName():获取变量名;value.toString():变量值装String
            }
            sb.append("]");
            return sb.toString();
        }else{
            return "null";
        }
    }
}

最后就是调用我们的代码的时候:

public static void main(String[] args){
        try {
            Bean bean=new Bean();
            bean.setYear(19);
            bean.setName("嫩嫩的猿");
            String beanString=JavaBeanToString.toString(bean);//转String
            System.out.println(beanString);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }

运行结果:
这里写图片描述

以上就是java通过反射机制,来吧一个Bean toString的方法,如果想自己实践一下的童鞋,可以写一个把Bean对象转Json的项目;或者把Bean类里面其他类变量再转成string的项目,我们现在的代码,如果Bean对象里面有其他对象,只能把对象直接toString。
完结!!!

猜你喜欢

转载自blog.csdn.net/qq_19306415/article/details/81949662
今日推荐