public static void main(String[] args) {
System.out.println("++++++++++++++++自定义类型的转换+++++++++++");
//判别式
Predicate<Employee> isLow = new Predicate<Employee>() {
@Override
public boolean evaluate(Employee object) {
return object.getSalary()<10000;
}
};
Predicate<Employee> isHigh = new Predicate<Employee>() {
@Override
public boolean evaluate(Employee object) {
return object.getSalary()>=10000;
}
};
Predicate[] pres = {isLow, isHigh};
//转换
Transformer<Employee, Level> lowTrans = new Transformer<Employee, Level>() {
@Override
public Level transform(Employee input) {
return new Level(input.getName(), "卖身中");
}
};
Transformer<Employee, Level> highTrans = new Transformer<Employee, Level>() {
@Override
public Level transform(Employee input) {
return new Level(input.getName(), "养身中");
}
};
Transformer[] trans = {lowTrans, highTrans};
//二者进行了关联
Transformer switchTrans = new SwitchTransformer(pres, trans, null);
List<Employee> list = new ArrayList<Employee>();
list.add(new Employee("老马", 1000000));
list.add(new Employee("老飞", 999));
Collection<Level> levelList = CollectionUtils.collect(list, switchTrans);
//遍历容器
Iterator<Level> levelIt = levelList.iterator();
while(levelIt.hasNext()){
System.out.println(levelIt.next());
}
System.out.println("++++++++++++++++自定义类型的转换+++++++++++");
//判别式
Predicate<Employee> isLow = new Predicate<Employee>() {
@Override
public boolean evaluate(Employee object) {
return object.getSalary()<10000;
}
};
Predicate<Employee> isHigh = new Predicate<Employee>() {
@Override
public boolean evaluate(Employee object) {
return object.getSalary()>=10000;
}
};
Predicate[] pres = {isLow, isHigh};
//转换
Transformer<Employee, Level> lowTrans = new Transformer<Employee, Level>() {
@Override
public Level transform(Employee input) {
return new Level(input.getName(), "卖身中");
}
};
Transformer<Employee, Level> highTrans = new Transformer<Employee, Level>() {
@Override
public Level transform(Employee input) {
return new Level(input.getName(), "养身中");
}
};
Transformer[] trans = {lowTrans, highTrans};
//二者进行了关联
Transformer switchTrans = new SwitchTransformer(pres, trans, null);
List<Employee> list = new ArrayList<Employee>();
list.add(new Employee("老马", 1000000));
list.add(new Employee("老飞", 999));
Collection<Level> levelList = CollectionUtils.collect(list, switchTrans);
//遍历容器
Iterator<Level> levelIt = levelList.iterator();
while(levelIt.hasNext()){
System.out.println(levelIt.next());
}
}
该代码中Predicate判断和Transformer转换都使用了数组,Predicate[] pres = {isLow, isHigh},Transformer[] trans = {lowTrans, highTrans},它们之间是一一对应的关系,即:isLow和lowTrans对应,isHigh和highTrans对应。当isLow判断为true时,就选择对应的lowTrans输出转换类型。如果Transformer[] trans = {lowTrans, highTrans}顺序改为Transformer[] trans = {highTrans, lowTrans},那么如果isLow为true,那么将执行的是highTrans。
总之,它是顺序对应的。