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
中没有字段)。 类 B
和 C
之后可以在不同线程中多次创建和使用。像这样使用 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 调用共享缓存和池。
见
我在 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
中没有字段)。 类 B
和 C
之后可以在不同线程中多次创建和使用。像这样使用 OkHttpClient 是正常的还是应该只是 private final OkHttpClient
?我很困惑,因为在 static
, but in the official documentation they're referring to 用法示例中显示仅使用 final
修饰符创建它。
使用static
因为OkHttpClient
支持多线程。通过这种方式,您可以跨所有 http 调用共享缓存和池。
见