在java中使用new关键字访问静态资源

时间:2018-02-06 07:56:07

标签: java

我正在使用OkHttpClient here。对于使用get请求,有一个我无法理解的下面提到的代码:

Request request = new Request.Builder()
      .url(url)
      .build();

在这里,我无法理解new Request.Builder() 我想我们正在使用Builder()类名访问静态Request方法。但如果是这样,那么为什么我们应用new关键字呢?

4 个答案:

答案 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类的静态内部类,这就是我们使用这种语法的原因。