Java 开发记录

1、在实体类向前台返回数据时用来忽略不想传递给前台的属性或接口

注解名称:@JsonIgnore
作用:在实体类向前台返回数据时用来忽略不想传递给前台的属性或接口。
Eg:User实体中会有字段password字段,当返回用户信息给前台的时候,当然是不希望将password值也一并返回。所以,这个时候可以在password属性上加上注解JsonIgnore或者,可以在User类上加上注解@JsonIgnoreProperties(value = “{password}”)

2、在实体类向前台返回时间数据格式化

注解名称:@JsonFormat
此注解用于属性或者方法上(最好是属性上),可以方便的把Date类型直接转化为我们想要的模式,比如@JsonFormat(pattern = “yyyy-MM-dd HH-mm-ss”)

3、通用工具函数(推荐写法)

提高代码质量、代码可读性。

  • 字符串比较
java.util.Objects.equals(Object o1, Object o2);

源码:

public static boolean equals(Object a, Object b) {
	return (a == b) || (a != null && a.equals(b));
}
  • 列表为空
   org.apache.shiro.util.CollectionUtils.isEmpty(new ArrayList());

源码:

public static boolean isEmpty(Collection c) {
        return c == null || c.isEmpty();
    }
  • 判断数组&集合是否一样
//一维数组判断
Arrays.equals((new ArrayList()).toArray(), new ArrayList().toArray());

//多维数组判断
Arrays.deepEquals((new ArrayList()).toArray(), new ArrayList().toArray());

源码:

public static boolean equals(Object[] a, Object[] a2) {
        if (a==a2)
            return true;
        if (a==null || a2==null)
            return false;

        int length = a.length;
        if (a2.length != length)
            return false;

        for (int i=0; i
public static boolean deepEquals(Object[] a1, Object[] a2) {
        if (a1 == a2)
            return true;
        if (a1 == null || a2==null)
            return false;
        int length = a1.length;
        if (a2.length != length)
            return false;

        for (int i = 0; i < length; i++) {
            Object e1 = a1[i];
            Object e2 = a2[i];

            if (e1 == e2)
                continue;
            if (e1 == null)
                return false;

            // Figure out whether the two elements are equal
            boolean eq = deepEquals0(e1, e2);

            if (!eq)
                return false;
        }
        return true;
    }

你可能感兴趣的:(学习)