2023-11笔记

1.switch空指针异常

2023-11笔记_第1张图片

Exception in thread "main" java.lang.NullPointerException:
 Cannot invoke "String.hashCode()" because "" is null
	at Study5.Test03.main(Test03.java:6)

 我们由此可以知道,switch语句部分情况下使用case做的判断在某种意义上其实就是获取字符串的hashCode的过程。

还有我认为写代码的时候最好在switch之前做空判断

2.Integer为null赋值给int变量会报空指针

Integer为null赋值给int变量会报java.lang.NullPointerException的思考_integer null赋值报错-CSDN博客

其实是因为Interger类型值为null,默认调用了自己的自动拆箱方法null.intValue(),转为int 

同理,Double 和double,Boolean和boolean 这种封装类和基本类型之间的转换都要注意这种情况

3. MapStruct LocalDate映射Date

我与数据库交互实体中的时间字段,用LocalDate接的

但是返回给前端的实体中相同时间字段,用Date接的

然后使用mapstruct进行convert的时候,他默认将两个类型进行转换的时候,时区用的utc

2023-11笔记_第2张图片

2023-11笔记_第3张图片

那就导致了我存入数据库的数据和返回给前端的数据,不一致

3.1 解决办法

解决办法有两个,要么就是两个时间字段设置为同一个类型,就是把返回给前端的时间字段也改为Date,要么就是在convert的时候设置expression

我最后选择了把两个字段类型改为一致了

2023-11笔记_第4张图片

4.java8多字段排序

这个以前就用过,只是很长时间没用,忘记了

使用java8排序,就可以省很多代码

list.sort(Comparator.comparing(User::getAge).thenComparing(User::getName));

5.泛型怎么用@Builder构建

把泛型写到.后边

RangeCompare compare = RangeCompare.builder()
.leftSymbol(leftSymbol).leftNum(minMid)
.relation(Constant.COMMA_SPLIT)
.rightNum(maxMid).rightSymbol(rightSymbol)
.build();

6.用long型接  防止过大变为负数

java 相乘结果为负数如何-CSDN博客

long iadd = 24L * 3600L * 1000L * 30; 

你可能感兴趣的:(笔记)