我正在使用OkHttpClient
here。对于使用get
请求,有一个我无法理解的下面提到的代码:
Request request = new Request.Builder()
.url(url)
.build();
在这里,我无法理解new Request.Builder()
我想我们正在使用Builder()
类名访问静态Request
方法。但如果是这样,那么为什么我们应用new
关键字呢?
答案 0 :(得分:3)
我同意您正在访问以大写字母开头的方法。但否。它不是。 Builder()
不是一种方法。它是Ok HttpClient的内部类,你需要外部资源引用来访问内部类。
public static final class OkHttpClient.Builder
extends Object
来自source
public static final class Builder {
Dispatcher dispatcher;
@Nullable Proxy proxy;
答案 1 :(得分:2)
我不知道那个库,所以我在一般级别上回答。
如果您使用的语法正确,Builder
不是Request
的方法,而是(公共和静态)内部类。在这种情况下,执行new Request.Builder()
绝对正确。
您可以创建此类的对象,该对象允许您根据需要组合请求并构建它。
答案 2 :(得分:2)
我听到了你的声音。 java没有表现力。
尝试以这种方式编写代码
Request.Builder requestBuilder= new Request.Builder();
Request request=requestBuilder.url(url) //other attributes
.build();
这是一个名为builder pattern的编程中着名的创作设计模式。
构建器模式的意图是找到对象构造函数反模式的解决方案,当对象构造函数参数组合的增加导致构造函数的指数列表时发生。构建器模式不是使用大量构造函数,而是使用另一个对象(构建器),它逐步接收每个初始化参数,然后立即返回生成的构造对象。
答案 3 :(得分:1)
这里Builder是Request类的静态内部类,这就是我们使用这种语法的原因。