反射工具类


import java.lang.reflect.Field;
import java.util.LinkedList;
import java.util.List;

/**
 * @Auther: liyue
 * @Date: 2018/10/24 14:44
 * @Description:
 */
public class ReflexUtil {


    /**
     * 获取对象的所有属性值
     *
     * @param clazzT
     * @param <T>
     * @return
     */
    public static <T> List<String> getObjectAttributeNames(Class<T> clazzT) {
        List<String> list = new LinkedList<>();
        try {
            //根据类名获得其对应的Class对象 写上你想要的类名就是了 注意是全名 如果有包的话要加上 比如java.Lang.String
            Class clazz = Class.forName(clazzT.getName());
            //根据Class对象获得属性 私有的也可以获得
            Field[] fields = clazz.getDeclaredFields();
            for (Field f : fields) {
                list.add(f.getName());
                // 类型
                // f.getType();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;
    }


    /**
     * 把对象String类型为空的值设置为""
     *
     * @param object
     */
    public static void setNotNull(Object object) {
        try {
            for (Field f : object.getClass().getDeclaredFields()) {
                f.setAccessible(true);
                //判断字段是否为空,并且对象属性中的基本都会转为对象类型来判断
                if (f.get(object) == null) {
                    try {
                        f.set(object, "");
                    } catch (Exception e) {
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        Test t = new Test();
        t.setD(142.435);
        t.setD2(2.652);
        t.setS("111sdfs");
        System.err.println(t);
        setDouble2bit(t);
        System.err.println(t);
    }


    /**
     * 把属性类型为Double的保留两位小数
     *
     * @param object
     */
    public static void setDouble2bit(Object object) {
        try {
            for (Field f : object.getClass().getDeclaredFields()) {
                f.setAccessible(true);
                try {
                    Class<?> type = f.getType();
                    String typeName = type.getTypeName();
                    if (typeName.equals("double") || typeName.equals("java.lang.Double")) {
                        String s = f.get(object) + "";
                        f.set(object, CalculateProportionUtil.doubleBit(Double.parseDouble(s), 2));
                    }
                } catch (Exception e) {
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * * 对象转JSONObject
     *
     * @param o
     */
    public static JSONObject setJson(Object o) {
        JSONObject json = new JSONObject();
        try {
            for (Field f : o.getClass().getDeclaredFields()) {
                f.setAccessible(true);
                //判断字段是否为空,并且对象属性中的基本都会转为对象类型来判断
                if (f.get(o) != null) {
                    try {
                        json.put(f.getName(), f.get(o));
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return json;
    }

}

fastjson

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.83</version>
        </dependency>

END。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值