记录一下自己容易犯的一些错误和一些开发技巧,大家有好建议可以分享一下
1.包名尽量小写,复杂的名称建议拆成几个包
2.经常用到的常量可以写成一个常量类,而不要直接在代码里写成字符串
3.遇到常量和某个值做比较时(尤其是equal判断是否相当),建议将常量写在前面,这样可以避免空指针异常。
4.List集合常用方法
//list = {"1","2","2","3","4","5",}
//1、去重,返回新list
List<String> list = ...
Set<String> set = new HashSet<>();
set.addAll(list);
List<String> newList = new ArrayList<>();
newList.addAll(set);
//2、遍历 也可以用list.stream().forEach()
list.forEach(i -> {
System.out.println(i);
})
//3、遍历,返回新集合
//这里遍历对象po的集合,取出对象的id放到新的集合里并用set进行去重
Set<String> reAuthSet = poList.stream().map(Po::getId).collect(Collectors.toSet());
//4、过滤
list.stream().filter(u -> !"2".equals(u))
5.对象复制
最简单的:
import org.springframework.beans.BeanUtils;
//把source复制给target
//缺点,性能不高,复杂对象如List<Object>无法复制
BeanUtils.copyProperties(source, target);
最好的:
新写一个对象复制类
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import java.util.List;
@Mapper
public interface UserConvert {
OrgConvert INSTANCE = Mappers.getMapper(OrgConvert.class);
//基本对象复制
UserVo getVo(UserDTO userDTO);
//复杂对象复制
List<UserVO> getUserVOList(List<UserPo> userPos);
//特殊情况,将a属性复制给b
@Mappings({
@Mapping(source = "a", target = "b")
})
UserVO getUserVo(UserPo po);
}
使用:
userVo = UserConvert.INSTANCE.getUserVO(userPo);
6.尽量不用在代码里返回null值,
如果没有数据,你可以这样写:
// 返回值类型为集合
return Collections.emptyMap();
// 返回值类型为对象
return new Vo();