在Java中validation空集合和空集合的最佳实践
我想validation一个集合是否为空并且为null
。 任何人都可以让我知道最佳做法。
目前,我正在检查如下:
if (null == sampleMap || sampleMap.isEmpty()) { // do something } else { // do something else }
如果在项目中使用Apache Collections库,则可以使用CollectionUtils.isEmpty
和MapUtils.isEmpty
方法分别检查集合或映射是否为空(即它们是“无效”)。
这些方法背后的代码或多或less是用户@icza在他的答案中写的。
不pipe你做什么,记住你写的代码越less,代码复杂度越低,你需要testing的代码就越less。
这是检查它的最好方法。 你可以写一个辅助方法来做到这一点:
public static boolean isNullOrEmpty( final Collection< ? > c ) { return c == null || c.isEmpty(); } public static boolean isNullOrEmpty( final Map< ?, ? > m ) { return m == null || m.isEmpty(); }
就个人而言,我更喜欢使用空的集合而不是null
并且algorithm的工作方式对于algorithm来说,如果集合是空的或者不是空的,那么algorithm是无关紧要的。
如果您使用Spring框架,那么您可以使用CollectionUtils
来检查集合(List,Array)和Map等。
if(CollectionUtils.isEmpty(...)) {...}
当你使用弹簧,那么你可以使用
boolean isNullOrEmpty = org.springframework.util.ObjectUtils.isEmpty(obj);
其中OBJ是任何[地图,集合,arrays,aythink …]
否则:代码是:
public static boolean isEmpty(Object[] array) { return (array == null || array.length == 0); } public static boolean isEmpty(Object obj) { if (obj == null) { return true; } if (obj.getClass().isArray()) { return Array.getLength(obj) == 0; } if (obj instanceof CharSequence) { return ((CharSequence) obj).length() == 0; } if (obj instanceof Collection) { return ((Collection) obj).isEmpty(); } if (obj instanceof Map) { return ((Map) obj).isEmpty(); } // else return false; }
对于string最好的是:
boolean isNullOrEmpty = (str==null || str.trim().isEmpty());
如果你需要检查null,那就是这样。 但是,如果你有这个控制权,只要可能,只要返回空的集合,并且只在以后检查空。
这个线程与C#大致相同,但是这些原则同样适用于java。 就像之前提到的那样,null应该只在返回时才返回
- null可能意味着更具体的东西;
- 你的API(合同)可能会强制你返回null。
你可以使用org.apache.commons.lang.Validate
的“ notEmpty ”方法:
Validate.notEmpty(myCollection)
– >validation指定的参数集合既不为空也不为零(无元素); 否则抛出exception。
对于所有集合的集合映射使用:isEmpty方法,这些集合对象上有。 但是你必须先做一个nulkl检查
地图;
…….. if(map!= null &&!map.isEmpty())……