package guava只读函数式编程过滤转换约束集合;
import java.util.Set;
import com.google.common.base.Preconditions;
import com.google.common.collect.Constraint;
import com.google.common.collect.Constraints;
import com.google.common.collect.Sets;
/**
- 操作容器时加入约束条件:非空,长度验证 类似数据库的Constraint
- 2个要点
- 1.Preconditions先决条件
- 2.Constraints约束
*/
public class Demo03 {
public static void main(String[] args) {
//创建容器
Set<String> sets=Sets.newHashSet();
//创建约束
//注意:这个地方用guava14以后的高些版本,导包就报错
Constraint<String> constraint=new Constraint<String>() {//这个地方用guava14以后的版本导包就报错
@Override
public String checkElement(String element) {
//非空验证;添加空报错
Preconditions.checkNotNull(element);
//长度验证;即必须是5-20之间的字符串,否则就报错
Preconditions.checkArgument(element.length()>=5&& element.length()<=20);
return element;
}
};
//包装Set 并加入约束constraint
Set<String> cs = Constraints.constrainedSet( sets, constraint);
//测试
//cs.add(null);//报错"java.lang.NullPointerException"空指针异常
// 测试
//cs.add("good");//报错"java.lang.IllegalArgumentException"非法的长度
cs.add("abcdef");//没有报错 测试成功
for(String str:cs){
System.out.println(str);//结果abcdef;添加成功
}
}
}