OkHTTP Client Java 初始化:它应该是静态的还是最终的?

OkHTTP Client Java initialization: should it be static or just final?

我在 java 应用程序中使用 OkHttp 库。我有一个 class 发出请求并使用 OkHttpClient class,然后在其他 2 classes.

中使用
Class A {
 private static final OkHttpClient client = new OkHttpClient();
 public Response makeRequest(...) { ... }
}
Class B {
 private static final A a = new A();
 void doB() { try(var temp = a.makeRequest()) { ... } }
}
Class C {
 private static final A a = new A();
 void doC() { try(var temp = a.makeRequest()) { ... } }
}

我的问题是:A.class 中的字段 OkHttpClient 应该是静态的还是最终的?因为如果它是静态的,那么 A 的用法可以是静态的(因为 A.class 中没有字段)。 类 BC 之后可以在不同线程中多次创建和使用。像这样使用 OkHttpClient 是正常的还是应该只是 private final OkHttpClient ?我很困惑,因为在 someone's saying it's okay to use it with static, but in the official documentation they're referring to 用法示例中显示仅使用 final 修饰符创建它。

使用static因为OkHttpClient支持多线程。通过这种方式,您可以跨所有 http 调用共享缓存和池。