利用Guava的Suppliers.memoize实现单例
时间: 2024-02-27 16:52:16 浏览: 14
可以使用Guava的`Suppliers.memoize`方法来实现单例模式。下面是一个示例代码:
```java
import com.google.common.base.Suppliers;
import java.util.function.Supplier;
public class SingletonExample {
private static final Supplier<SingletonExample> INSTANCE = Suppliers.memoize(() -> new SingletonExample());
private SingletonExample() {
// private constructor
}
public static SingletonExample getInstance() {
return INSTANCE.get();
}
}
```
在这个示例中,使用`Suppliers.memoize`方法创建了一个Supplier对象,该对象用于返回单例实例。`Suppliers.memoize`方法接受一个Supplier对象作为参数,并返回一个新的Supplier对象,该对象将第一次调用`get()`方法的结果缓存起来,后续调用时直接返回缓存的结果。在这个示例中,我们将`SingletonExample`类的构造函数私有化,以确保只有一个实例可以被创建。在`getInstance()`方法中,我们通过`INSTANCE.get()`来获取单例实例,Guava会自动缓存第一次创建的实例并在后续调用中返回该实例。