Google Guava学习笔记

Guava函数式编程(3)

2016-09-16  本文已影响230人  Viking_Den

使用Supplier接口

Supplier接口只要一个方法:

public interface Supplier<T> {
   T get();
}

非常简单的一个定义,简而言之,得到一个对象。但它有什么用呢?我们可以把耗资源运算放到get方法里,在程序里,我们传递的是Supplier对象,直到调用get方法时,运算才会执行。
实现Supplier的示例:

public class ComposedPredicateSupplier implements Supplier<Predicate<String>> {
     @Override
     public Predicate<String> get() {
           City city = new City("Austin,TX","12345",250000, Climate.SUB_TROPICAL,45.3);
           State state = new State("Texas","TX", Sets.newHashSet(city), Region.SOUTHWEST);
           City city1 = new City("New York,NY","12345",2000000,Climate.TEMPERATE,48.7);
           State state1 = new State("New York","NY",Sets.newHashSet(city1),Region.NORTHEAST);
           Map<String,State> stateMap = Maps.newHashMap();
           stateMap.put(state.getCode(),state);
           stateMap.put(state1.getCode(),state1);
           Function<String,State> mf = Functions.forMap(stateMap);
           return Predicates.compose(new RegionPredicate(), mf);
     }
}
Supplier<Predicate<String>> wrapped = Suppliers.memoize(composedPredicateSupplier);
Supplier<Predicate<String>> wrapped = Suppliers.memoize(composedPredicateSupplier,10L,TimeUnit.MINUTES);

PS:函数式编程里的惰性求值

上一篇下一篇

猜你喜欢

热点阅读