stream api比较简单
函数式接口的设计 不是很好理解,记一个复杂的情况
@FunctionalInterface
public interface ProductSpec {
boolean satisfy(Long p);
// 此处的p 是satisfy的参数p
static ProductSpec color(BigDecimal decimal) {
return p -> p.longValue() == decimal.longValue();
}
}
public void testSatisfy(ProductSpec productSpec) {
productSpec.satisfy(111L);
}
public void test() {
BigDecimal bigDecimal = new BigDecimal(12);
// 第一种
testSatisfy(new ProductSpec() {
@Override
public boolean satisfy(Long p) {
return p.longValue() == bigDecimal.longValue();
}
});
// 第二种
testSatisfy(p -> p.longValue() == bigDecimal.longValue());
// 第三种
testSatisfy(ProductSpec.color(bigDecimal));
}
如上 第三种一开始确实不好理解。。。但是代码却可以高复用,相比较简介