Java 发送DTO时如何避免NULL?
我有一个DTO和几个列表Java 发送DTO时如何避免NULL?,java,spring,hibernate,spring-mvc,spring-boot,Java,Spring,Hibernate,Spring Mvc,Spring Boot,我有一个DTO和几个列表 @Data public class ContributionUpdate<T extends MovieRequest> { private Map<Long, T> elementsToAdd; private List<T> newElementsToAdd; private Map<Long, T> elementsToUpdate; private List<Long>
@Data
public class ContributionUpdate<T extends MovieRequest> {
private Map<Long, T> elementsToAdd;
private List<T> newElementsToAdd;
private Map<Long, T> elementsToUpdate;
private List<Long> idsToDelete;
}
@数据
公共类贡献更新{
私有地图元素添加;
私有列表newElementsToAdd;
私有地图元素更新;
私有列表idsToDelete;
}
发送对象时,某些课程可能为空。操作这些列表的方法看起来很糟糕,因为条件检查消息是否为NULL。如果对象的列表为空,是否有正确的方法创建空列表?可能是Apache
CollectionsUtils
方法将帮助您:
public static <T> Collection<T> emptyIfNull(Collection<T> collection)
公共静态集合emptyIfNull(集合集合)
如果参数为null或
论点本身则不然
可能是Apache
CollectionsUtils
方法将帮助您:
public static <T> Collection<T> emptyIfNull(Collection<T> collection)
公共静态集合emptyIfNull(集合集合)
如果参数为null或
论点本身则不然
您可以将DTO更新为以下内容:
@Data
public class ContributionUpdate<T extends MovieRequest> {
private Map<Long, T> elementsToAdd = new HashMap<>();
private List<T> newElementsToAdd = new ArrayList<>();
private Map<Long, T> elementsToUpdate = new HashMap<>();
private List<Long> idsToDelete = new ArrayList<>();
}
@数据
公共类贡献更新{
私有映射元素stoadd=newhashmap();
私有列表newElementsToAdd=newarraylist();
私有映射元素stoupdate=newhashmap();
私有列表idstodelite=new ArrayList();
}
但这可能不是一个好的解决方案,您最好更新返回此数据的服务,以便在缺少数据的情况下返回空地图或列表。您可以将您的数据更新为以下内容:
@Data
public class ContributionUpdate<T extends MovieRequest> {
private Map<Long, T> elementsToAdd = new HashMap<>();
private List<T> newElementsToAdd = new ArrayList<>();
private Map<Long, T> elementsToUpdate = new HashMap<>();
private List<Long> idsToDelete = new ArrayList<>();
}
@数据
公共类贡献更新{
私有映射元素stoadd=newhashmap();
私有列表newElementsToAdd=newarraylist();
私有映射元素stoupdate=newhashmap();
私有列表idstodelite=new ArrayList();
}
但这可能不是一个好的解决方案,您最好更新返回此数据的服务,以便在缺少数据的情况下返回空的映射或列表。Java中的引用类型总是不可为null的,所以为了减少对null值的膨胀检查,您可以使用
assert
语句强制输入有效
然后,您的函数将从以下内容开始
assert contribution.getElementsToAdd() != null;
assert contribution.getElementsToUpdate() != null;
assert contribution.contribution.getIdsToDelete() != null;
...
然后您就可以安全地使用这些函数,并确保您将拥有一个有效的值。如果用户在开发和测试中向函数发送无效值,则断言将失败
在某种程度上,这是防御性编码和你说“看,如果你给了我无效的输入,我就抛出一个异常”之间的平衡
对于
ContributionUpdate
类,可以在构造函数中使用空值初始化每个映射/列表,这样就不会默认为null
引用并命中那些断言。Java中的引用类型始终不可为null,因此为了减少对null值的膨胀检查,您可以使用assert
语句强制输入有效
然后,您的函数将从以下内容开始
assert contribution.getElementsToAdd() != null;
assert contribution.getElementsToUpdate() != null;
assert contribution.contribution.getIdsToDelete() != null;
...
然后您就可以安全地使用这些函数,并确保您将拥有一个有效的值。如果用户在开发和测试中向函数发送无效值,则断言将失败
在某种程度上,这是防御性编码和你说“看,如果你给了我无效的输入,我就抛出一个异常”之间的平衡
对于ContributionUpdate
类,可以在构造函数中用空值初始化每个映射/列表,这样就不会默认为null
引用并点击这些断言