模仿java.util.Optional
public class CollectOptional{ private static final CollectOptional> EMPTY = new CollectOptional<>(); private final Collection collect; private CollectOptional() { this.collect = null; } private CollectOptional(Collection collect) { this.collect = collect; } public static CollectOptional empty() { @SuppressWarnings("unchecked") CollectOptional collect = (CollectOptional ) EMPTY; return collect; } public static CollectOptional ofEmpty(Collection collect) { if(CollectionUtils.isEmpty(collect)){ return empty(); } return new CollectOptional<>(collect); } public Collection get(){ if (collect == null) { throw new NoSuchElementException("No value present"); } return collect; } public boolean isNotEmpty() { return !CollectionUtils.isEmpty(collect); } public CollectOptional isEmpty(Consumer > consumer) { if(CollectionUtils.isEmpty(collect)){ consumer.accept(collect); } return this; } public void ifNotEmpty(Consumer > consumer) { if(CollectionUtils.isEmpty(collect)){ return; } consumer.accept(collect); } public R ifPresentApply(Function , R> function) { if(CollectionUtils.isEmpty(collect)){ return null; } return function.apply(collect); } }



